Hibernate的状态和加载机制

Hibernate的状态和加载机制

hibernate一般有三个状态:

public  void  savaRole(){
----1----
      RoleEntity roleEntity =new RoleEntity();
           roleEntity.setNaem("李华");
      ---1---
      ----2----
  Transactiontr=session.getTransaction();
      tr.begin();
   session.save(roleEntity);
      //session.delete(roleEntity);
         ----立即加载----
      //session.get(roleEntity,1);
         ----立即加载----
            ----延时加载----
       //session.load(roleEntity,1);
          ----延时加载----
      roleEntity.setNaem("李华1");
      tr.commit();
      ----2----
      ----3----
      session.close();
      ----3----
  }
  ```
  如上所视
1.瞬时状态:运行在内存中,与数据库无关(并未做事务处理 ,之创建对象)

2.持久状态:数据库存在,内存中也存在
  持久化的状态,在修改持久状态的时候,不会  去同步数据库,会先放入一级缓存,
  当我们提交事务的时候,hibernate会把缓存与数据库同步(一定要开启事务状态)(进行事务处理且没有关闭session)
  
3.游离状态:在内存中存在,在数据库不一定存在(关闭session链接后)

**其中最重要的部分为持久状态**
在持久状态中,会涉及一个缓存问题。
再持久状态中操作实体对象的属性的变化
会将缓存session中的实体对象改变,从而
hibernate则会默认改变数据库中的数据(前提:事务处于开启状态)



**立即加载(急加载)和延迟加载(懒加载)**
    **如上所示**
立即加载(默认是急加载)
立即加载是在加载一个实体时,会立即从数据库中查询,与其关联的类也会被同时查询,关闭链接后依然可以查看实体属性
延迟加载(懒加载)
延时加载是Hibernate为提高程序执行效率而提供的一种机制,即只有真正使用该对象的数据才会从数据库加载,在关闭连接前如果未使用实体属性,则关闭链接后无法查看实体属性

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值