JPA的一些知识(Entity)

何为Entity
Java EE规范中关于Entity的第一句就是An entity is a lightweight persistence domain object
entity应该和E-R图中的E是一个意思就是实体,接下来是“轻量级的持久化domain object”,
啥是domain object?
按维基上的解释就是一个多层的业务系统中持有状态的对象,用来进行层次间数据的传递。其中分离了动作(通常如此)的被称为贫血业务对象(Anemic),该模式被Martin Fowler大叔作为反模式批判。Entity中持久化的状态可以通过持久化属性或字段表示,并用注解进行标记。
如何理解持久化和轻量级呢?
持久化的领域对象,意即领域对象包括两种,不需要通过I/O进行持久化的和需要的。
轻量级的意思,应该是相对EJB2而言,可以脱离EJB容器而存在。

一个实体类的要素包括:
1 用javax.persistence.Entity注解
2 该类必须提供无参数构造方法,可以使protected或public的
3 该类必须可继承(不能final),实例变量和方法也一样
4 当需要作为游离对象被传递给EJB会话Bean时,需要同时实现Serializable接口
5 可以自由继承和被继承
6 持久化的实例变量必须保证只能通过方法来访问(private或protected声明)

对持久化字段和属性的要求
必须是基本类型,字符串,或其他的可序列化类型
持久化字段和属性的区别是,一个将标注应用到字段上,一个应用在Getter上
对于出现Many的情况,所用的集合类型必须实现Java的Collection接口,如:
■ java.util.Set
■ java.util.List
■ java.util.Map
JAP2.0引入了ElementCollection标记,可以用来表述非Entity定义的集合的一对多关系,其生成的表结构为一个fk和value组合为主键的关联表
可以用@Pattern @NotNull 等进行字段的约束

主键
主键必须是常见类型或者自定义的复合主键类
建立复合主键类时,要注意重写equals和hashcode

关系
共有四种关系:
一对一
一对多
多对一
多对多

关系的方向:
有双向和单向,双向可以在双方做修改,单向只能在一方做修改
在使用查询语言时,要注意方向上的可达性

你可能感兴趣的:(数据结构,bean,ejb,jpa)