对jpa中一些最基本的映射注解进行总结:
@Entity
将某个类标记为实体类,将在数据库中创建对应的表,其中的name属性为可选设置,如果不设置的话,数据库中表的名字
与类名一致,如果设置@Entity(name="t_person"),则表的名字就变成t_person。
@Id
标记为数据库表的id唯一标识字段。
@GeneratedValue
经常和@Id一起使用,指定表的id生成策略,可以不指定,如果不指定的话,表示不使用id生成策略,则进行保存操作时,
需要自己指定id。如果指定@GeneratedValue而不指定任何参数时,表示使用自增长的Id生成策略,类似于
hibernate中的native生成策略。
使用@Id和@GeneratedValue时需要注意一点:这两个注解既可以放在field上面,例如private int id;也可以放在
property前面,例如:public int getId()。如果放在field上面,则数据库中的字段与field一致,即使某些field没有
getter和setter,数据库中也会有相应的字段。如果是放在property上面,则数据库中只会有包含getter和setter的那
些property。
@Transient
指定该属性不在数据库中生成对应的字段。
@Column(name="XXX")
如果不在属性上指定任何注解,则该属性保存在数据库中对应的字段名与属性名一致。如果指定该属性,则数据库中对应的
字段名就为该注解指定的名称。
@PersistenceContext
放在EntityManager前面定义,PersistenceContext,称为持久化上下文,它一般包含有当前事务范围内的,被管理的
实体对象(Entity)的数据。每个EntityManager,都会跟一个PersistenceContext相关联。PersistenceContext中存
储的是实体对象的数据,而关系数据库中存储的是记录,EntityManager正是维护这种OR映射的中间者,它可以把数据从
数据库中加载到PersistenceContext中,也可以把数据从PersistenceContext中持久化到数据库,EntityManager通
过Persist、merge、remove、refresh、flush等操作来操纵PersistenceContext与数据库数据之间的同步!
EntityManager与Hibernate中的Session类似。