## 概述
全称Java Persistence Api,java的持久化规范. JPA是一套接口,hibernate是实现.所有的ORM框架都可以实现JPA接口.hibernate有自己的独立的ORM操作方式.也有JPA规范实现的操作方式.
## JAP的使用
JPA是通过注解的方式来描述对象和表的映射关系.之前的对象和表的映射关系是通过XML.
## 配置
持久化类配置:
~~~
//标注此类为持久化类
@Entity
//标注表名
@Table(name = "customer")
public class Customer
{
//标注为主键,OID
@Id
//和表的哪个字段做映射
@Column(name = "cust_id")
//增长策略,OID的增长策略
@GeneratedValue(strategy = GenerationType.AUTO)
private Long cust_id;
//其他属性和表中字段映射,如果一样可以不写
@Column(name = "cust_name")
private String cust_name;
private String cust_industry;
private String cust_source;
private String cust_level;
private String cust_phone;
private String cust_address;
}
~~~
在src下有一个META-INF文件夹,在MRTA-INF文件下下有一个persistence.xml文件.所有的数据库信息配置都在这个文件中来配置.
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">
~~~
测试:
~~~
//加载数据库信息.xml文件中填写的名称. 以下这步相当于sessionFactory
EntityManagerFactory factory = Persistence.createEntityManagerFactory("mysql");
//获取连接session
EntityManager entityManager = factory.createEntityManager();
//获取事务
EntityTransaction tx = entityManager.getTransaction();
//开启事务
tx.begin();
Customer customer = new Customer();
customer.setCust_name("jack");
//相当于save()
entityManager.persist(customer);
tx.commit();
entityManager.close();
~~~