Hibernate补充学习-02

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

持久化类编写规则:

  • 持久化类需要提供无参数的构造方法.因为在Hibernate的底层需要使用反射生成类的实力
  • 持久化类的属性需要私有,对私有的属性提供公有的get和set方法.因为在Hibernate底层会将查询到的数据进行封装
  • 持久化类的属性要尽量使用包装类的类型.因为包装类和基本数据类型的默认值不同,包装类的类型语义描述更清晰而基本数据类型不容易描述
  • 持久化类要有一个唯一表示OID与表的主键对应.
  • 持久化类尽量不要使用final进行修饰.因为Hibernate有延迟加载的机制,这个机制中会产生代理对象,其实就是产生了当前类的一个子类对象实现的,如果使用final修饰,不能产生子类

主键的类型:

  • 自然主键:把具有业务含义的字段作为主键
  • 代理主键:把不具有业务含义的字段作为主键

Hibernate的主键生成策略

 

Hibernate的持久化对象的三种状态

  • 瞬时态(transient):瞬时态也称为临时态或自由态,瞬时态的实例是由new命令创建,开辟内存空间的对象,不存在持久化标识OID,尚未与Hibernate Session关联,在数据库中也没有记录,失去引用后被JVM回收.瞬时状态的对象在内存中是孤立存在的,与数据库中的数据无任何关联,仅是一个信息携带的载体
  • 持久态(persistent):持久态的对象存在持久化标识OID,加入到了Session缓存中,并且相关联的Session没有关闭,在数据库中有对应的记录,每条记录只对应唯一的持久化对象.P.S持久态对象是事务还未提交前变成持久态的.
  • 脱管态(detached):脱管态也成为离线态或游离态,当某个持久化状态的实例与Session的关联被关闭时就变成了脱管态.脱管态对象存在持久化标识OID,并且仍然与数据库中的数据存在关联,只是失去了与当前Session的关联,脱管状态对象发生改变时,Hibernate不能检测到

Hibernate持久化对象的三种状态转换


瞬时态转换为脱管态:为瞬时态对象设置持久化标识ID
 

Customer customer = new Customer();//瞬时态
customer.setCust_id(1);//脱管态

Hibernate的一级缓存
持久态对象能够自动更新数据,依赖于Hibernate的一级缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值