JSR-338 学习笔记(JPA)

来源:互联网 发布:mac上顿号怎么打 编辑:程序博客网 时间:2024/05/16 17:25
  1. Entities类可以用两种方式的注解来标识,Fields和Properties,区别在于如果用Fields来注解,在运行时会直接对成员变量进行访问(除了那些用Transient注解的属性,或是用transient声明的变量,transient声明的变量即告诉运行时,该变量不属于序列化的一部分,亦不属于持久化的一部分)

  2. 可以用四种类型来表示集合,Collection, Set, List, Map,@ElementCollection注解可以用来表示集合,它有两个属性,targetClass表示自定义类或者内嵌类,fetch表示获取的方式EAGER还是LAZY

  3. Validate(Bean Validation),JPA会在PrePersist,PreUpdate,PreRemove这几个生命周期事件中进行约束检查

  4. 自定义的Validator可以和默认提供的一起使用,对于Validator的注解应该和Entities的注解方式相同,即如果使用Fields模式注解的类,约束也应该加在fields上,否则应该写在properties上。

  5. 系统自带的约束参照Bean Validation章节,code层在javax.validation.constraints包下面

  6. Bidirectional和Unidirectional的区别:两个实体都存在对对方的引用,这就是bi-directional,否则就是unidirectional

  7. Cascade operation(关联操作,我自己翻译的),指的是,父Entity的变化会对引用的子Entity产生何种影响,比如父Entity被删除了,它引用的子Entity是否要一起删除,适用于@OneToOne, @OneToMany

  8. Orphan Removal(孤立删除),指的是如果一个实体被解除被引用的关系时,是否要进行删除,适用于@OneToOne, @OneToMany,默认false,比如一个客户对10个订单有引用,如果删掉1个订单,那么这个订单就是孤立的实体,可以利用孤立删除机制进行删除

  9. 管理Entities的两种方式,Container-Managed Entity Managers, Application-Managed Entity Managers,前者通过@PersistenceContext注解进行注入一个EntityManager

  10. Entity的状态,new, managed, detached, removed

  11. 强制同步,可以调用EntityManger.flush()方法进行强制同步,如果设定了关联操作,也会进行关联操作

  12. 持久单元(Persistence Units),在persistence.xml可以配置多个单元在代码中注入使用

  13. 打包,persistent units可以和war或者ejb放到一起打包,也可以单独打成jar包然后放入war或者ear中

  14. 如果放到ejb中一起打包,则persistence.xml要放到ejb/META-INF/下面

  15. 如果放到war中一起打包,则persistence.xml要放到WEB-INF/classes/META-INF/下面

  16. 如果单独打成jar包,要放到war的WEB-INF/lib下面

  17. 如果单独打成jar包,要放到ear的lib文件夹下面

0 0
原创粉丝点击