JPA的一些知识(Entity)

本文详细介绍了Java EE规范中Entity的概念及其特点,包括Entity的基本定义、构成要素、持久化字段的要求、主键设定及关系处理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]何为Entity[/b]
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容器而存在。

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

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

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

[b]关系[/b]
共有四种关系:
一对一
一对多
多对一
多对多

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值