使用JPA持久化对象的步骤
- 创建 persistence.xml, 在这个文件中配置持久化单元
需要指定跟哪个数据库进行交互;
需要指定 JPA 使用哪个持久化的框架以及配置该框架的基本属性
- 创建实体类, 使用 annotation 来描述实体类跟数据库表之间的映射关系.
- 使用 JPA API 完成数据增加、删除、修改和查询操作
创建 EntityManagerFactory (对应 Hibernate 中的 SessionFactory);
创建 EntityManager (对应 Hibernate 中的Session);
HelloWorld开始
1.创建persistence.xml 文件
这个要放到类路径下面的META-INF目录下面.
JPA规范要求在类路径的META-INF目录下面放persistence.xml,文件名称是固定的。
<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0"xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"><!--name 属性用于定义持久化单元的名字, 必选transaction-type:指定 JPA 的事务处理策略。RESOURCE_LOCAL:默认值,数据库级别的事务,只能针对一种数据库,不支持分布式事务。如果需要支持分布式事务,使用JTA:transaction-type="JTA"--><persistence-unit name="jpa-1" transaction-type="RESOURCE_LOCAL"><!--配置使用什么 ORM 产品来作为 JPA 的实现1. 实际上配置的是 javax.persistence.spi.PersistenceProvider 接口的实现类2. 若 JPA 项目中只有一个 JPA 的实现产品, 则也可以不配置该节点.--><provider>org.hibernate.ejb.HibernatePersistence</provider><!-- 添加持久化类 --><class>cn.carven.jpa.helloworld.Customer</class><properties><!-- 连接数据库的基本信息 --><property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/><property name="javax.persistence.jdbc.url" value="jdbc:mysql:///jpa"/><property name="javax.persistence.jdbc.user" value="root"/><property name="javax.persistence.jdbc.password" value="123456"/><!-- 配置 JPA 实现产品的基本属性. 配置 hibernate 的基本属性 --><property name="hibernate.format_sql" value="true"/><property name="hibernate.show_sql" value="true"/><property name="hibernate.hbm2ddl.auto" value="update"/></properties></persistence-unit></persistence>
2.导入相关依赖
3.创建持久化类
@Table(name = "jpa_customer")@Entitypublic class Customer {private Integer id;private String lastName;private String email;private int age;@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.AUTO)public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(name = "last_name")public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
4.执行持久化操作
public static void main(String[] args) {// 1.创建EntityManagerFactoryEntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1");// 2.创建EntityManagerEntityManager entityManager = entityManagerFactory.createEntityManager();// 3.开启事务EntityTransaction transaction = entityManager.getTransaction();transaction.begin();// 4.进行持久化操作Customer customer = new Customer();customer.setAge(12);customer.setEmail("123@qq.com");customer.setLastName("zs");customer.setBirth(new Date());customer.setCreatedTime(new Date());entityManager.persist(customer);// 5.提交事务transaction.commit();// 6.关闭EntityManagerentityManager.close();// 7.关闭EntityManagerFactoryentityManagerFactory.close();}
