[Hibernate] Hibernate的主键类型及三种对象状态
一、hibernate中的实体规则
1.实体类创建的注意事项
1.持久化类提供无参构造函数
2.成员变量私有化,提供set/get方法
3.持久化类的属性尽量使用包装类
4.持久化类需要提供oid,与数据库的主键对应
5.不要使用final修饰class ,因为hibernate 使用cglib代理生成代理对象。代理对象需要继承被代理对象名,如果使用final修饰则无法继承
2.主键类型
主键生成策略(7个)
identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键。
increment(了解): 主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值。
sequence:Oracle中的主键生成策略
hilo:高低位算法主键自增,由hibernate 维护。开发时不使用
native:hilo+sequence+identity 自动三选一
uuid:随机产生字符串作为主键,主键类型必须是String类型
assigned:自然主键生成策略,有开发人员自己录入
二、hibernate中的对象状态
对象分为3种状态:
瞬时状态:没有id,没有与之关联的session
持久化状态:有id,有与之关联的session
游离|托管状态:有id,没有与之关联的session
三种状态转换:
希望同步到数据库中的数据,对应的对象转换为持久化对象。