Hibernate持久化类

持久化类

持久化类: 将内存的的对象保存到数据库中,简而言之就是Java类+映射文件。

编写规则

  1. 对持久化类提供一个无参构造方法
  2. 属性私有,提供set和get方法
  3. 唯一标识OID
  4. 使用包装类类型(使用Interator 而非 int)
  5. 持久化类不能用final修饰

持久化类的三种状态

瞬时态: 没有被OID,没有被Session所管理。
托管态: 有OID,没有被Session所管理。
持久态: 有OID,且被Session所管理。
总而言之: 两者都占的是持久态,两者都不占的是瞬时态,只占前者的是托管态。

    public static void main(String[] args) {
        Session session = HibernateUtils.openSession();
        Transaction transaction = session.beginTransaction();

        StudentEntity studentEntity = new StudentEntity();//瞬时态
        studentEntity.setName("sss");
        Serializable id = session.save(studentEntity);//持久态

        transaction.commit();
        session.close();
        System.out.println(studentEntity.getName());//托管态
    }

状态转换

瞬时态:
获得:建立对象 StudentEntity studentEntity = new StudentEntity();//瞬时态
瞬时态到持久态:save() saveOrUpdate(Object obj) 加上OID和Session
瞬时态到托管态: .setId() 加上OID

持久态:
获得: get() ,load(),find(),Iterate()。
持久态到瞬时态: delete() 去掉OID和Session
持久态到托管态: close() clear()/清空所有 evict(Object obj)/清空某一个,去掉Session

托管态:
获得: setid
托管态到持久态: update(),saveOrUpdate() 加上Session即可
托管态到瞬时态: setid(null); 去掉OID 即可
在这里插入图片描述

Hibernate缓存

一级缓存:
一级缓存也被称为Session缓存,发送SQL语句先去缓存里面查看有无,若有则不发送SQL语句到数据库。
一级缓存结构:
快照区:发送到缓存的请求先去快照区查看,比较差异,若相同就不找找数据库的事儿。
clear 会清空缓存。

HQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值