使用JPA操作Oracle数据库实现简单易行(jpa操作oracle)
使用JPA操作Oracle数据库:实现简单易行
Java Persistence API (JPA) 提供了一种标准的方式去管理关系型数据库,包括Oracle数据库。它允许开发者使用对象来代表数据库中的数据,从而简化了与数据库打交道的过程,并且带来了更好的可读性和可维护性。在本文中,我们将介绍如何使用JPA来操作Oracle数据库,并展示使用JPA操作Oracle数据库是多么的简单易行。
准备工作
在我们用JPA操作Oracle数据库之前,需要先确保以下几个方面:
1. 你已经安装了Java JDK并配置好了环境变量。
2. 你已经安装了Oracle数据库,并且知道如何创建用户、表和数据。
3. 你已经安装了Eclipse IDE用于开发Java应用程序。
步骤一:创建Maven工程
我们需要在Eclipse IDE中创建一个Maven工程。在Eclipse中,打开“File”菜单,然后选择“New” -> “Project” -> “Maven Project”,然后选择“Create a simple project”,并在下一步中输入项目名称和其他详细信息。
步骤二:添加JPA依赖
我们需要在Maven工程的pom.xml文件中添加JPA依赖。在pom.xml文件中添加以下代码:
org.hibernate
hibernate-entitymanager
5.4.22.Final
com.oracle.database.jdbc
ojdbc8
19.3.0.0
这个pom.xml文件会下载所需的依赖文件,并将它们添加到我们的Maven工程中。
步骤三:配置JPA连接参数
我们需要在persistence.xml文件中配置JPA连接参数。在src/mn/resources目录下,创建一个名为persistence.xml的文件,并添加以下内容:
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd”
version=”2.1″>
org.hibernate.jpa.HibernatePersistenceProvider
com.example.entity.Person
在这个文件中,我们指定了persistence-unit的名称为oraclePU,这个属性在后面的代码中会用到。我们使用了Hibernate作为JPA实现的提供者,并且使用了Oracle JDBC驱动器连接Oracle数据库。
步骤四:创建实体类
我们需要创建一个实体类(例如,Person类)。这个类将映射到数据库中的表。例如,下面是一个简单的Person实体类定义:
@Entity
@Table(name = “PERSON”)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = “ID”)
private Long id;
@Column(name = “FIRST_NAME”)
private String firstName;
@Column(name = “LAST_NAME”)
private String lastName;
// setter and getter methods
}
在这个例子中,我们使用了JPA注解来定义实体类中的属性与数据库表中的列关联。其中@Id注解标注了实体类中的属性作为主键列;@GeneratedValue注解自动为这个列设置一个唯一的值;@Column注解定义了属性名称与列名称的对应关系。
步骤五:创建DAO层
DAO(Data Access Object)层是数据管理的核心层,它是使用JPA操作Oracle数据库的关键。下面是一个简单的PersonDAO类的定义,它用于执行与Person实体类相关的数据操作:
public class PersonDAO {
private static EntityManagerFactory emf;
static {
emf = Persistence.createEntityManagerFactory(“oraclePU”);
}
public static void addPerson(Person person) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(person);
em.getTransaction().commit();
em.close();
}
public static void updatePerson(Person person) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.merge(person);
em.getTransaction().commit();
em.close();
}
public static void deletePerson(long id) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Person person = em.find(Person.class, id);
em.remove(person);
em.getTransaction().commit();
em.close();
}
public static Person getPersonById(long id) {
EntityManager em = emf.createEntityManager();
Person person = em.find(Person.class, id);
em.close();
return person;
}
public static List getAllPersons() {
EntityManager em = emf.createEntityManager();
String jpql = “SELECT p FROM Person p”;
TypedQuery query = em.createQuery(jpql, Person.class);
List persons = query.getResultList();
em.close();
return persons;
}
}
这个DAO类中包含了用于添加、更新、删除、查询单个记录和查询所有记录的方法,每一个方法都使用了EntityManager对象。这个类中的方法采用JPA API标准进行实现,它们也是JPA操作Oracle数据库的核心代码。
步骤六:测试代码
下面是一个简单的测试代码,可以验证我们上述的JPA、DAO层的代码是否正确工作:
public class MnApp {
public static void mn(String[] args) {
Person person1 = new Person();
person1.setFirstName(“John”);
person1.setLastName(“Doe”);
PersonDAO.addPerson(person1);
Person person2 = PersonDAO.getPersonById(1);
person2.setFirstName(“Jane”);
PersonDAO.updatePerson(person2);
List persons = PersonDAO.getAllPersons();
persons.forEach(person -> System.out.println(person.getFirstName() + ” ” + person.getLastName()));
PersonDAO.deletePerson(1);
}
}
这个程序会创建一个新的Person对象,将其保存到数据库中,并从数据库中获取该对象并更改第一个名称。之后,我们会遍历整个数据库表并打印所有人的名字。程序会删除Person对象。
总结
JPA操作Oracle数据库是一个简单易行的过程。我们只需要按照上述几个步骤进行操作,就可以在Java应用程序中使用JPA来读写Oracle数据库。当然,这里没有涉及到更多高级的JPA操作,但相信读者经过这个例子的学习之后已经能够更深入的了解并掌握JPA的基本使用方法。