操纵持久化对象

对象状态及生命周期

  • 瞬时状态transient:构造对象(session中没有,数据库中没有)
  • 持久状态persistent:对象被session管理。(session中有,数据库中有)

     持久状态下:当提交事务,清理缓存时发现session中数据和数据库中不一致时,将会把session中的数据更新到数据库中;在保存以后再修改对象,那么将会产生多条sql语句,会造成效率较低,所有建议在save前进行修改。

  • 游离状态detached:session关闭后(session里面没有,数据库里面有)
//对于news对象来说其对应阶段状态
public void testSave(){
        Session session = null;
        Transaction tx =null;
        News news =null;
        try{
            session = HibernateUtils.getSession();
            tx = session.beginTransaction();
            //构造对象---瞬时状态
            news = new News();
            news.setNewsTitle("111");
            news.setNewsContent("2222");
            //持久状态,user被session管理,并且有id有值
            session.save(news);
            news.setNewsTitle("8888");
            tx.commit();
        }catch(Exception e){
            e.printStackTrace();
            tx.rollback();
        }finally{
            HibernateUtils.close(session);
        }
        //游离状态
        System.out.println(news.getNewsTitle());
    }

 

转载于:https://www.cnblogs.com/zhouyeqin/p/7194070.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值