首页 > 代码库 > Hibernate实体类编写规则和主键策略

Hibernate实体类编写规则和主键策略

一、实体类的编写规则

  1、属性要是私有的。

    技术分享

  2、要有公开的setter和getter方法供外界访问和修改。

    技术分享

 

  3、每一个实体类要有一个属性作为唯一值(一般都是使用对于数据表的主键)。

    技术分享

 

  4、建议数据类型不要使用基本的数据类型,而是使用相应的包装类。

    技术分享

  5、Java中对应的包装类

基本数据类型 对应包装类
int Integer
char Character
boolean Boolean
float Float
double Double
short Short
long Long
byte Byte

 

    使用包装类的原因:因为有时候使用基本数据类型无法准确表示一些场景。

             例:score代表学生的成绩,但是在考试时可能存在缺考的情况,如果使用int数据类型,则score = 0表示考了分,但是缺考还是score =

               0,这样无法区分;如果使用Integer,则要是缺考,score = null;这样就可以区分是考了0分还是缺考。

 

二、主键生成策略

    1、Hibernate要求在一个实体中必须要有一个属性作为唯一值,这个唯一值一般都对应表中的主键。

    2、主键分类

      自然主键:把具有业务含义的字段作为主键,称之为自然主键。

      代理主键:把不具有业务含义的字段作为主键,称之为代理主键。

    3、主键的常见生成策略有七种

      (1)increment :用于long、short或int类型的,由Hibernate自动由递增的方式生成唯一标识符,每次增长1.

               只有当没有其他线程向同一张表中插入数据时使用。不能在集群情况下使用,适用于代理主键。

      (2)identity:采用底层数据库提供的本身提供的主键生成标识符,前提是数据库必须支持自增长的数据类型。

              在DB2、mysql、MS SQL SERVER、Sybase和HypersonicSQL数据库中可以使用该策略,该策略

              要求在数据库中把主键定义为自增长,适用于代理主键。

      (3)sequence:Hibernate根据底层数据库序列生成标识符。条件是数据库要支持序列,Oracle数据库可以使用该策略

               适用于代理主键。

      (4)hilo:hilo:通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。

      (5)native:根据底层数据库对自动生成表示符的能力来自动选择identity、sequence和hilo三种生成器中的一种。

              适合跨数据库平台开发,适用于代理主键。

      (6)uuid:Hibernate采用128位的UUID来生成字符,使用16进制表示,使用该策略时主键必须定义为String类型,

             由于其所占的空间较多,使用较少,适用于代理主键。

      (7)assigned:由Java程序负责生成标识符,如果在配置文件中不配置<generator></generator>标签,则默认为

              该策略,适用于自然主键。

Hibernate实体类编写规则和主键策略