EJB学习笔记 (待续)

来源:互联网 发布:网络信息系统管理员 编辑:程序博客网 时间:2024/05/01 11:23
08:EJB注解的定义,注解的属性可以从EJB的规范中学习。


08:Local和Remote注解中的Value属性只在Bean实现多于1个接口时需要定义,不包括Serializable和Externalizable以及任何在javax.ejb包中定义的接口.


08:Java的注解规则:如果注解中只有一个属性,且属性为value,则value=“”可以省略为“”。


12:Local和Remote注解都不定义的默认注解为Local


13:拦截器的使用,在需要使用拦截器的类之前加上Interceptors注解,并且在拦截器类的方法前加上AroundInvoke注解


15:如果多于一个persistence-unit的话,在PersistenceContext注解中的unitName一定需要写出。


15:所有未标明@Transient的属性均会默认映射到数据表。


15:@Table和@Column注解的name属性可以改变映射到数据表的名字、长度等属性。(在EJB的persistence文档中有具体说明)


15:映射的对象取决于注解所在的位置是在method前面还是在field前面,当注解在field前,映射的对象仅为field中的属性,而如果注解定义在method之前时,将映射getters/setters所指定的属性。




16:@GeneratedValue规定id的生成策略,仅使用@GeneratedValue时,ID的生成策略是自动。


16:UUID的生成策略,当id为字符串时,给项目导入hibernate-anotation的jar包,在@GeneratedValue注解中定义一个generator,并在@GenericGenerator的name中定义同一个名字,且定义strategy为uuid。


17:一对一关联和一对多关联。一对一关联分为主键关联和外键关联。一对多关联分为一对多单向关联和一对多双向关联。


17:一对多单向关联不是在“多”的一方的数据表增加一个外键指向“一”的数据表,而是创建一个中间表,在中间表中记录单向关联。


17:一对多双向关联不会有中间表,而是添加一个外键。在一对多中一定要定义mappedby。


17:继承映射有三种策略:单表继承策略、JOINED策略(不包含父类的属性,只包含拓展的属性)、TABLE_PER_CLASS策略(子类包含所有策略)


18:EntityManager是由EntityManagerFactory创建。


18:在所有的服务对象中创建的EntityManager是不一样的,但他的缓存对象是一致的,所以他们是线程安全的。


 在EJB JPA中,使用results = (List<Object>) query.getResultList()查询数据,当数据库中没有数据时,results 得到的并不是null,而是一个list:[null]. 
query.getSingleResult()如果找不到结果 会抛出异常 @throws EntityNotFoundException if there is no result.