您的位置:首页 > Web前端 > JavaScript

JSR-338 学习笔记(JPA)

2016-05-30 11:50 387 查看
Entities类可以用两种方式的注解来标识,Fields和Properties,区别在于如果用Fields来注解,在运行时会直接对成员变量进行访问(除了那些用Transient注解的属性,或是用transient声明的变量,transient声明的变量即告诉运行时,该变量不属于序列化的一部分,亦不属于持久化的一部分)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如果单独打成jar包,要放到ear的lib文件夹下面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JPA javaEE