Hibernate持久化类的编写规则与配置文件中主键的生成策略

1、持久化类

所谓持久化,就是将内存中的数据永久存储到关系型数据库中,所谓的持久化类指的是一个Java类与数据库表建立了映射关系,那么这个类称为是持久化类。

2、持久化类的编写规则

  • 持久化类需要提供无参的构造方法,因为在Hibernate的底层需要使用反射生成类的实例。
  • 持久化类的属性需要私有,对私有的属性提供公有的get和set方法,因为在Hibernate底层会将查询到的数据进行封装。
  • 持久化类的属性要尽量使用包装类的类型,因为包装类和基本数据类型的默认值不同,包装类的类型语义描述更清晰而基本数据类型不容易描述。

             假设表中有一列员工工资,如果使用double类型,如果这个员工工资忘记录入到系统中,系统会将默认值0存入到数据库,如果这个员工的工资被扣完了,也会向系统中存入0,那么这个0就有了多重含义,而如果使用包装类型就会避免以上情况,如果使用Double类型,忘记录入工资就会存入null,而这个员工工资被扣完了,就会存入0,不会产生歧义。

  • 持久化类需要由一个唯一标识OID与表的主键对应,因为Hibernate中需要通过这个唯一标识OID区分在内存中是否是同一个持久化类。在Java中通过地址区分是否是同一个对象,在关系型数据库的表中通过主键区分是否是同一条记录,Hibernate就是通过这个OID来进行区分的,Hibernate是不允许在内存中出现两个OID相同的持久化对象的。

          由hibernate管理的表必须具有主键

  • 持久化类尽量不要使用final进行修饰因为在Hibernate中有延迟加载的机制,这个机制中会产生代理对象,Hibernate产生代理对象的过程实际上是产生当前类的一个子类对象,如果使用了final修饰持久化类,那么就不能产生子类,从而就不会产生代理对象,那么Hibernate的延迟加载策略就会失效。

  

 

3、主键的生成策略

  主键的生成策略在.hbm.xml配置文件的主键<id>中进行配置

       <hibernate-Mappeing>

                  <class name=     table=>

                            <id name=>

                                     <generator  class=""/>  // =================在此配置主键的生成策略

                            <id>

                 </class>

        </hibernate-Mappeing>

        主键生成策略是每条记录在录入时主键的生成规则

  •            identity--主键自增,由数据库来指定主键值,在录入时不需要指定主键。
  •            increment----由hibernate来维护,每次录入时,会查询当前主键的最大值然后进行+1,具有线程安全问题,不推荐使用。
  •            sequence----Oracle的主键生成策略
  •            hilo------由hibernate维护的主键生成策略,不推荐使用
  •            native-----identity sequence  hilo自动选一
  •            uuid-------产生随机字符串作为主键,必须要用String类型作为主键类型
  •            assigned-------自然主键生成策略,由用户自己指定主键的生成策略

          

posted @ 2017-11-23 22:10  Garcia11  阅读(470)  评论(0编辑  收藏  举报