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为提高程序执行效率而提供的一种机制,即只有真正使用该对象的数据才会从数据库加载,在关闭连接前如果未使用实体属性,则关闭链接后无法查看实体属性