EJB 实体Bean

JavaBean风格
·属性为私有,有get和set方法


映射实体:@Entity
无参的构造方法:标注@Entity的实体类至少要有一个无参的构造方法
实现Serializable接口,建议每个Entity都实现该接口


可继承性:
·实体可继承,非实体类可以继承自实体类,实体类也可以继承自非实体类
·抽象类(abstract)也可以标注为实体类
映射主键@Id
映射表和字段:@Table、@Column

java数据类型与数据库中的类型转换时JPA实现框架自动转换的,所以不同的JPA实现框架转换的规则也不太一样

 

映射优化一:基本数据类型 VS 封装类
·例:比如字段id,它的值不能为null,所以映射成int型和Interger型都可以
·例:比如字段age,值可能是null,映射成int时,会发生异常
注:建议都使用包装类,虽然会牺牲一些转化的效率,但可以避免持久化数据时的一些异常。

 

映射优化二:@Basic设置加载方式
·可以设置一个枚举类型,例:public enum FetchType(LAZY,EAGER);有时创建实体时如果也加载的话,可能会造成资源严重占用,这时候就需要设置实体属性的加载方式为惰性加载(LAZY).
·optional表示属性是否可为null,不能用于java基本数据类型byte,int,short,long,Boolean,char,float,double


主键映射:
主键标识:@Id
   @GeneratedValue用于主键的生成策略
自增主键:@GeneratedValue(strategy = GenerationType.AUTO)
   @GeneratedValue(strategy = GenerationType.SEQUENCE  -Oracle
   @GeneratedValue(strategy = GenerationType.IDENTITY  -SQL server
表生成器:@TableGenerator
复合主键:@IdClass
嵌入式主键:@Embeddedld
JPA可定义的生成主键策略比较:
·SEQUENCE,IDENTITY主要针对一些特殊的数据库,未确定系统要支持的数据库类型时,最好不要使用。
·AUTO用于比较简单的主键,对主键生成策略要求少
·TABLE生成策略是将主键的值持久化在数据库的表中,因为只要是关系型数据库,都可以创建一个表,专门来保存生成的值,这样就消除了数据库之间的不兼容性,既能保证支持多种数据库,又有一定的灵活性,建议使用。
·如果以上方法不能满足需求时,可以通过一定的规则来设置主键的值,可以使用UUID,使其在程序中自动生成,然后映射到实体的主键上,不能通过JPA的主键生成策略来实现。

映射特殊类型
映射Blob和Clob类型(@Lob),注意项:
·@Lob适用于标注字段类型为Clob和Blob类型
·Clob类型是长字符串类型,映射可为char[]、Character[]或者String类型
·Blob类型是字节类型,映射可为byte[]、Byte[]或者实现了Serializable接口的类
·因为这两种类型的数据一般占用的内存空间比较大,所以都要与@Basic标记同时使用,设置加载方式为FetchType.LAZY

映射非持久化类型:@Transient

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值