简介
Java Persistence API(JPA)是Java EE 5规范中的一部分,它提供了一种标准的方式来管理Java对象与关系数据库之间的映射。JPA的出现使得Java开发人员可以更加方便地进行持久化操作,而不必关心底层的数据库操作细节。
本文将介绍如何使用JPA来构建一个简单的Java持久化应用程序。
环境准备
在开始之前,需要确保已经安装了以下软件:
- JDK 1.8或更高版本
- Eclipse IDE
- MySQL数据库
同时,还需要下载并导入以下JAR包:
- javax.persistence-api-2.2.jar
- hibernate-core-5.4.10.Final.jar
- mysql-connector-java-8.0.19.jar
创建数据库
首先,需要创建一个名为“jpa_demo”的数据库。可以使用MySQL Workbench或者命令行工具来创建。
CREATE DATABASE jpa_demo;
创建实体类
在Java中,实体类是指与数据库表相对应的Java类。在JPA中,实体类必须满足以下要求:
- 必须有一个无参构造函数
- 必须有一个唯一标识符(ID)属性
- 必须使用@Entity注解进行标注
在本例中,我们将创建一个名为“User”的实体类,它对应着数据库中的“user”表。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
private String email;
// getters and setters
}
在上面的代码中,@Id注解表示该属性是实体类的唯一标识符,@GeneratedValue注解表示该属性的值是自动生成的。
创建数据访问对象(DAO)
数据访问对象(DAO)是用于访问数据库的对象。在JPA中,可以使用EntityManager来进行数据库操作。
public class UserDao {
private EntityManager entityManager;
public UserDao() {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpa_demo");
entityManager = entityManagerFactory.createEntityManager();
}
public void save(User user) {
entityManager.getTransaction().begin();
entityManager.persist(user);
entityManager.getTransaction().commit();
}
public User findById(Long id) {
return entityManager.find(User.class, id);
}
public List<User> findAll() {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
Root<User> root = criteriaQuery.from(User.class);
criteriaQuery.select(root);
TypedQuery<User> typedQuery = entityManager.createQuery(criteriaQuery);
return typedQuery.getResultList();
}
}
在上面的代码中,我们使用EntityManagerFactory来创建EntityManager对象。在save方法中,我们使用EntityManager的persist方法来将实体类保存到数据库中。在findById方法中,我们使用EntityManager的find方法来根据ID查找实体类。在findAll方法中,我们使用Criteria API来查询所有的实体类。
测试代码
现在,我们已经创建了实体类和数据访问对象,可以编写测试代码来验证它们的正确性。
public class App {
public static void main(String[] args) {
UserDao userDao = new UserDao();
User user1 = new User();
user1.setName("张三");
user1.setAge(20);
user1.setEmail("zhangsan@example.com");
userDao.save(user1);
User user2 = new User();
user2.setName("李四");
user2.setAge(25);
user2.setEmail("lisi@example.com");
userDao.save(user2);
User user3 = userDao.findById(1L);
System.out.println(user3.getName());
List<User> userList = userDao.findAll();
for (User user : userList) {
System.out.println(user.getName());
}
}
}
在上面的代码中,我们创建了两个User对象,并将它们保存到数据库中。然后,我们根据ID查找了一个User对象,并输出了它的名字。最后,我们查询了所有的User对象,并输出了它们的名字。
总结
本文介绍了如何使用JPA来构建一个简单的Java持久化应用程序。首先,我们创建了一个名为“User”的实体类,它对应着数据库中的“user”表。然后,我们创建了一个数据访问对象(DAO),它用于访问数据库。最后,我们编写了测试代码来验证它们的正确性。