Hibernate-对象状态、一级缓存和懒加载

对象状态
例如对于: User user = new User();

user有这几个状态:

临时状态
特点: 直接new出来的对象; 不处于session的管理; 数据库中没有对象的记录;

持久化状态
当调用session的save/saveOrUpdate/getloa/d/list等方法的时候,对象就是持久化状态。
处于持久化状态的对象,当对对象属性进行更改的时候,会反映到数据库中!
特点: 处于session的管理; 数据库中有对应的记录;、

游离状态
它是Session关闭后,对象的状态;
特点 :
不处于session的管理;
数据库中有对应的记录

代码举例:

public void testSaveSet() throws Exception {
Session session = sf.openSession();
session.beginTransaction();

    // 创建对象                     【临时状态】
    User user = new User();
    user.setUserName("Jack22222");
    // 保存                           【持久化状态】
    session.save(user);     
    user.setUserName("Jack333333");  // 会反映到数据库 

    // 查询
    User user = (User) session.get(User.class, 5);
    user.setUserName("Tomcat");// hibernate会自动与数据库匹配(一级缓存),如果不一样就更新数据库  

    session.getTransaction().commit();
    session.close();

    user.setUserName("Jack444444444");  //不会更新到数据库
    // 打印                           【游离状态】
    System.out.println(user.getUserId());
    System.out.println(user.getUserName());
}

一级缓存
使用一级缓存可以减少向数据库发送HQL语句的数量,从而减小数据库的压力,也避免不必要的查询。

概念
1࿰

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值