JPA
今天讲的是JPA规范,还是由经验丰富的徐老师讲的,JPA是一门解决了各个ORM“诸侯争霸”的局面。详细点就是
1.JPA概述
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。JPA是在充分吸收了现有Hibernate(数据库平台无关)、TopLink等ORM框架的基础上发展而来的,达到平台无关性(持久化技术产品)。
JPA是EJB的一部分。
2.jar包支持
Hiberante核心包(8个文件)
hibernate-distribution-3.3.1.GA,加上mysql的驱动jar
3. JPA规范要求在类路径的META-INF目录下放置persistence.xml,文件的名称是固定的。
事务的特点:acid: atomic consistent isolate durable
4.JPA编程建模
映射关系
代理主键:( 采用一种增长策略) @id
定义id属性,相当于Hibernate中的OID.这两个注解必须显式指定,其他的映射是隐
式(默认)的.
5.方法上注解优先,测试CRUD操作
em.persist(order);
em.find(Order.class,new Long(1));
em.remove(order);
em.merge(order);
6.JPA语法严谨,语句:select p from Person p where p.name=’tom’ select要写
7.不想往数据库中存,就注解 @Transient
8. @Lob
@Basic(fetch=FetchType.LAZY)
protected byte[] picture;
映射temporal(精确度)
@Temporal(TemporalType.DATE)//该注解只能注util.Date和Canlendar.
protected Date creationDate;
9.组成关系
Customer homeAddress comAddress
Address{
}
在类上加@Embeddable
10.JPA关系 重点
JPA关系 ManyToOne/OneToMany
@ManyToOne/@OneToMany
Class Order{
@ManyToOne
Customer customer ;
Class Customer{
@OneToMany(mappedBy=“”)
Set<Order> orders = ..
}
注:如果集合不采用泛型的话,如何才知道集合与谁关联.
@OneToMany(targetEntity=Order.class,mappedby=“customer”)
今天就到此了!