注意类型
1.持久化类提供无参构造 (也就是说要么别写构造方法,要么就要在写其他带参数的构造方法时也要写一个无参的
2.成员变量私有,提供get/set方法访问成员变量,即提供属性(属性=成员变量+get/set方法)
3.持久化类中的属性应该尽量使用包装类(这样我们就多出了一个null的选项,而没有什么坏处)
4.持久化类需要提供与数据库中的主键列对应的属性,例如o_id
5.不要使用final来修饰class(hibernate使用cglib代理生成代理对象,代理对象是继承被代理对象的,如果使用final,则无法代理)
主键类型分类
自然主键(少):表的某一列符合必须有且唯一的特征,该列可以作为主键使用.比如身份证
代理主键(常用):没有自然主键,需要创建一个没有业务意义的列作为主键
主键生成策略(7种)
主键生成策略就是实体类配置中的<generator>标签,每条记录生成时,主键的生成规则.
identity:主键自增,有数据库来维护主键值,录入时不需要指定主键.
sequence:Oracle的主键生成策略
increment:主键自增,由hibernate来维护,每次插入前会先查询主键id的最大值然后+1
hilo:高低位算法,主键自增,由hibernate来维护,不使用,主要时hibernate装逼用的.
native:hilo+sequence+identity三选一
uuid:产生随机的字符串作为主键,但是主键类型要为字符串类型
assigned:自然主键策略,hibernate不维护(用户自己指定主键,如果没有指定会报错)
注意:只有assigned是自然主键,其余的都是代理主键.