JPA Hibernate 快速入门

百科知识2025-04-261

为了学习JPA的实体状态的转化,我们先搭建一个通过JPA Hibernate存储实体到数据库的Demo,后续的学习都在此demo基础上展开。

###添加Hibernate依赖  org.hibernate hibernate-entitymanager 5.4.4.Final ###添加JDBC驱动 com.h2database h2 1.4.199 ###在META-INF/persistence.xml添加JPA和数据库配置文件 org.hibernate.jpa.HibernatePersistenceProvider

各位请注意:这里有一个标签

这个标签的作用我们以后结合JPA架构进行学习和理解

###创建试题管理器工厂类 public class JPAUtil { public static EntityManagerFactory getEntityManagerFactory() { EntityManagerFactory entityManagerFactory = Persistence .createEntityManagerFactory("Hibernate-JPA"); return entityManagerFactory; } } ###映射实体类 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "teachers") public class Teacher { @Id @GeneratedValue private Long id; private String email; //Must have empty constructor public Teacher() { } public Teacher(String email) { this.email = email; } //Getter/setter, toString() etc public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Student{" + "id=" + id + ", email='" + email + '\'' + '}'; } } ###使用实体管理器类CRUD实体 import com.jpa.demo.model.Teacher; import com.jpa.demo.utils.JPAUtil; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; public class TeacherDao { private EntityManagerFactory entityManagerFactory = JPAUtil.getEntityManagerFactory(); public Long save(Teacher teacher) { EntityManager entityManager = null; Long id = null; try { entityManager = this.entityManagerFactory.createEntityManager(); EntityTransaction tx = entityManager.getTransaction(); tx.begin(); entityManager.persist(teacher); id = teacher.getId(); tx.commit(); } finally { entityManager.close(); } return id; } public Teacher find(Long id) { EntityManager entityManager = null; Teacher teacher = null; try { entityManager = this.entityManagerFactory.createEntityManager(); EntityTransaction tx = entityManager.getTransaction(); tx.begin(); teacher = entityManager.find(Teacher.class,id); teacher.setEmail("updateEmail@devnote.pro"); tx.commit(); } finally { entityManager.close(); } return teacher; } } ###测试 public class App { public static void main( String[] args ) { try { Teacher teacher = new Teacher("email@dot.com"); TeacherDao teacherDao = new TeacherDao(); Long id = teacherDao.save(teacher); System.out.println("Student created with id: " + id); teacher = teacherDao.find(id); System.out.println("\n\n" + teacher); } catch (Exception e) { e.printStackTrace(); } } }