Hibernate持久化类编写规则

本文记录Java学习过程中遇到的Hibernate持久化类编写规则~

在编写持久化类的时候有以下几点需要注意:

  • 持久化类需要提供无参数的构造方法:因为在Hibernate底层需要诗意哦那个反射来生成类的实例;
  • 持久化类的属性私有,对私有属性提供共有的set/get方法:因为在Hibernate底层会将查询到的数据进行封装;
  • 持久化类的属性要尽量使用包装类的类型:因为包装类和基本数据类型的默认值不同,包装类的类型语义描述更清晰,而基本数据类型不容易描述;
  • 持久化类要有一个唯一标示OID与表的主键对应:因为Hibernate中需要通过这个唯一标示OID区分在内存中是否是同一个持久化类(在Java中是通过地址区分是否是同一个对象的,在关系型数据库中是通过主键区分是否是同一条记录的,注意:Hibernate是不允许在内存中出现两个OID相同的持久化对象的);
  • 持久化类尽量不要使用final进行修饰:因为Hibernate中有延迟加载的机制,这个机制中会产生代理对象,Hibernate产生代理对象使用的是字节码的增强技术完成的(其实就是产生了当前类的一个子类对象实现的)。如果使用了final修饰持久化类,那么就不能产生子类,从而就不会产生代理对象,那么Hibernate的延迟加载策略就会失效。

标签: none