JPA的CRUD操作,映射实体
来源:互联网 发布:数据库从入门到精通 编辑:程序博客网 时间:2024/05/16 12:15
1.初始化
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
还有另一种方法
Map configOverrides = new HashMap();//可编程配置
configOverrides.put("hibernate.hbm2ddl.auto", "create-drop");
EntityManagerFactory programmaticEmf = Persistence.createEntityManagerFactory("manager1", configOverrides);
注: 启动时,ClassLoader.getResource("META-INF/persistence.xml")
2.实体
@Entity
public class Employee {
age ;
setxxx();
}
总结:
每个实体必须有 ID,映射到主键,ID 必须定义在等级实体树的根上/超类上
ID应该是简单类型
@id实体中的单个字段/属性
@GeneratedValue可以采用几种策略自动生成值
SEQUENCE
TABLE
IDENTITY
AUTO
ID可以是用户定义的类(联合主键)
@Entity声明实体bean,类级别定义.基于字段/基于方法的持久化
@id 定义id属性,相当于Hibernate中的OID.这两个注解必须显式指定,其他的映射是隐 式(默认)的.根据采用的注解位置(字段注解/方法注解),Hibernate会采用相应的访问类型 (access=field|property).EJB3规范在被访问的元素类型上声明注解.比如方法访问,需要在getXXX上声明注解,字段级访问 就在属性上声明注解.不支持混合使用.Hibernate会通过@id/@Embeddedid的位置来判断采用哪种访问方式.
3.实体管理器
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1")
EntityManager em = emf.createEntityManager();
em.xxx();
em.close();
emf.close();
4.事务类型
Resource-local事务
JTA(Java Transaction Api)多个资源参与(多个数据库)
XA(分布式XA资源)
总结:
事务类型定义在持久化单元中 (persistence.xml)
Jee环境中默认是JTA
J2se环境中默认是Resource-local
5.@TransactionAttribute 注解
TransactionAttributeType.REQUIRED
TransactionAttributeType.REQUIRES_NEW
TransactionAttributeType.MANDATORY
TransactionAttributeType.NOT_SUPPORTED
TransactionAttributeType.NEVER
TransactionAttributeType.SUPPORTS
6.JPA的CRUD操作
EntityManager
相当于 hibernate 中的 session.控制实体的生命周期.
Persist()
Remove()
Merge()
Refresh()
CRUD的API方法:
em.persist(order);
em.find(Order.class,new Long(1));
em.remove(order);
em.merge(order);
7.JPA的映射
1)映射clob/blob
@Lob
@Basic(fetch=FetchType.LAZY)
protected byte[] picture;
注释:
mysql数据库在映射boolean类型时,数据库中的类型默认建成bit类型,查询出错, @Lob会生成blob类型.都需要手动进行修改.没有给出在注解中显示指定字段类型的属性.
2)指定表
@Table(name="USERS")
public class User
@Table(name="CATEGORIES",
uniqueConstraints=
{@UniqueConstraint(columnNames={"CATEGORY_ID"})})
uniqueConstraints只用于在自动建表时为某些列添加唯一性约束.
3)映射列:@Column(name="USER_ID")
4)临时字段:@Transient
5)组成关系:@Embeddable[相当于hibenrate的component]
6)映射 Embeddable类: @Embedded ,可以通过@AttributeOverride注解来覆盖Embeddable类中指定字段属性.更新地址属性的问题.
7)映射实体到多个表:
@Entity
@Table(name="users")
@SecondaryTable(name="user_photos", pkJoinColumns=@PrimaryKeyJoinColumn(name="USER_ID"))
public class User implements Serializable {
..
@column(table="user_photos",name="photo")
private byte[] getPhoto(){..}
8)生成主键值:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
protected Long userId;
SEQUENCE和TABLE策略都必须先定义生成器之后才能使用.
序列:@SequenceGenerator(name="user_seqgen",
sequenceName="seq_users",
initialValue=1, allocationSize=10)
9)序列表生成器
@TableGenerator (name="tabgen_person",
table="table_persons_id",
pkColumnName="pk",
valueColumnName="pkvalue",
pkColumnValue="pkvalue"),
allocateSize=10)
@Id
@GeneratedValue(strategy=GenerationType.TABLE,
generator="tabgen_person ")
@Column(name="id")
protected Long userId;
生成的表含有两个字段:主键列字段和值列字段.该表只有一条记录.所以还要给主键列指定主键值. 默认的主键生成策略 @GeneratedValue(strategy=GenerationType.AUTO)
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
还有另一种方法
Map configOverrides = new HashMap();//可编程配置
configOverrides.put("hibernate.hbm2ddl.auto", "create-drop");
EntityManagerFactory programmaticEmf = Persistence.createEntityManagerFactory("manager1", configOverrides);
注: 启动时,ClassLoader.getResource("META-INF/persistence.xml")
2.实体
@Entity
public class Employee {
age ;
setxxx();
}
总结:
每个实体必须有 ID,映射到主键,ID 必须定义在等级实体树的根上/超类上
ID应该是简单类型
@id实体中的单个字段/属性
@GeneratedValue可以采用几种策略自动生成值
SEQUENCE
TABLE
IDENTITY
AUTO
ID可以是用户定义的类(联合主键)
@Entity声明实体bean,类级别定义.基于字段/基于方法的持久化
@id 定义id属性,相当于Hibernate中的OID.这两个注解必须显式指定,其他的映射是隐 式(默认)的.根据采用的注解位置(字段注解/方法注解),Hibernate会采用相应的访问类型 (access=field|property).EJB3规范在被访问的元素类型上声明注解.比如方法访问,需要在getXXX上声明注解,字段级访问 就在属性上声明注解.不支持混合使用.Hibernate会通过@id/@Embeddedid的位置来判断采用哪种访问方式.
3.实体管理器
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1")
EntityManager em = emf.createEntityManager();
em.xxx();
em.close();
emf.close();
4.事务类型
Resource-local事务
JTA(Java Transaction Api)多个资源参与(多个数据库)
XA(分布式XA资源)
总结:
事务类型定义在持久化单元中 (persistence.xml)
Jee环境中默认是JTA
J2se环境中默认是Resource-local
5.@TransactionAttribute 注解
TransactionAttributeType.REQUIRED
TransactionAttributeType.REQUIRES_NEW
TransactionAttributeType.MANDATORY
TransactionAttributeType.NOT_SUPPORTED
TransactionAttributeType.NEVER
TransactionAttributeType.SUPPORTS
6.JPA的CRUD操作
EntityManager
相当于 hibernate 中的 session.控制实体的生命周期.
Persist()
Remove()
Merge()
Refresh()
CRUD的API方法:
em.persist(order);
em.find(Order.class,new Long(1));
em.remove(order);
em.merge(order);
7.JPA的映射
1)映射clob/blob
@Lob
@Basic(fetch=FetchType.LAZY)
protected byte[] picture;
注释:
mysql数据库在映射boolean类型时,数据库中的类型默认建成bit类型,查询出错, @Lob会生成blob类型.都需要手动进行修改.没有给出在注解中显示指定字段类型的属性.
2)指定表
@Table(name="USERS")
public class User
@Table(name="CATEGORIES",
uniqueConstraints=
{@UniqueConstraint(columnNames={"CATEGORY_ID"})})
uniqueConstraints只用于在自动建表时为某些列添加唯一性约束.
3)映射列:@Column(name="USER_ID")
4)临时字段:@Transient
5)组成关系:@Embeddable[相当于hibenrate的component]
6)映射 Embeddable类: @Embedded ,可以通过@AttributeOverride注解来覆盖Embeddable类中指定字段属性.更新地址属性的问题.
7)映射实体到多个表:
@Entity
@Table(name="users")
@SecondaryTable(name="user_photos", pkJoinColumns=@PrimaryKeyJoinColumn(name="USER_ID"))
public class User implements Serializable {
..
@column(table="user_photos",name="photo")
private byte[] getPhoto(){..}
8)生成主键值:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
protected Long userId;
SEQUENCE和TABLE策略都必须先定义生成器之后才能使用.
序列:@SequenceGenerator(name="user_seqgen",
sequenceName="seq_users",
initialValue=1, allocationSize=10)
9)序列表生成器
@TableGenerator (name="tabgen_person",
table="table_persons_id",
pkColumnName="pk",
valueColumnName="pkvalue",
pkColumnValue="pkvalue"),
allocateSize=10)
@Id
@GeneratedValue(strategy=GenerationType.TABLE,
generator="tabgen_person ")
@Column(name="id")
protected Long userId;
生成的表含有两个字段:主键列字段和值列字段.该表只有一条记录.所以还要给主键列指定主键值. 默认的主键生成策略 @GeneratedValue(strategy=GenerationType.AUTO)
- 传智播客--JPA的CRUD操作,映射实体
- JPA的CRUD操作,映射实体
- EJB+JPA演示实体类基本操作CRUD的实现
- jpa对单个实体bean的crud操作
- EJB+JPA演示实体类基本操作CRUD的实现
- JPA实体继承的映射
- JPA实体继承的映射
- JPA实体继承的映射
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承关系的映射策略
- JPA实体映射关系
- JPA实体基本映射
- JPA 实体映射
- JPA实体关系映射
- hibernate 对实体类的crud操作
- UML基础
- Necklace of Beads(hdu1817,ploay定理)
- XCode常用快捷键
- 基于用户的deviantArt推荐系统(SVD因子分解)
- android新的UI调试工具
- JPA的CRUD操作,映射实体
- DP 入门提练习解题报告
- Android入门:File文件存储
- 图片缓存管理
- HDU 1250Hat's Fibonacci(两种方法处理大数)
- JPA的关系映射和JPQL查询
- 微信公共平台开发接收与发送信息类型
- EJB
- insmod不匹配问题的解决