Spring Data学习 03 : JPA(未完待续)
2019-06-22 本文已影响0人
我问你瓜保熟吗
Spring Data 学习 01 :JDBC 访问 MySQL
Spring Data 学习 02 :Spring JdbcTemplate 访问 MySQL
Spring Data 学习 03 :JPA
Spring Data 学习 04:Spring Data JPA
一、什么是JPA
- JPA(Java Persistence API) 是用于管理Java EE和Java SE环境中的持久化,以及对象/关系映射的Java API,具体实现有Hibernate、EclipseLink、Apache OpenJPA
二、JPA核心概念:
- 实体表示关系数据库中的表
- 每个实体实例对应于该表中的行
- 类必须用javax.persistence.Entity注解
- 类必须有一个public或protected的无参数的构造函数
- 实体实例被当作值以分离对象方式进行传递(例如通过会话bean的远程业务接口),则该类必须实现Seriializable接口
- 唯一的对象标识符,简单主键(javax.persistence.Id)、复合主键(javax.persistence.EmbeddedId和javax.persistence.IdClass)
三、表对应关系:
- 一对一:@OneToOne
- 一对多:@OneToMany
- 多对一:@ManyToOOne
- 多对多:@ManyTomany
四、EntityManger接口:
定义用于与持久性上下文进行交互的方法
创建和删除持久实体实例,通过实体的主键查找实体
允许在实体上运行查询
- 获取EntityManger实例
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em;
@Resource
UserTransaction utx;
...
em = emf.createEntityManager();
try {
utx.begin();
em.persist(SomeEntity);
em.merge(AnotherEntity);
em.remove(ThirdEntity);
utx.commit();
} catch (Exception e) {
utx.rollback();
}
- 查找实体
@PersistenceContext
EntityManager em;
public void enterOrder(int custID, CustomerOrder newOrder) {
Customer cust = em.find(Customer.class, custID);
cust.getOrders().add(newOrder);
newOrder.setCustomer(cust);
}