Hibernate基础开发

  • 基本开发步骤
    1. 开发持久化类(实体类),配置映射文件(即xxx.hbm.xml文件)或者直接利用持久化注解(hibernate基本上直接使用了JPA的标准注解)开发
    2. 加载hibernate配置文件,获取configuration对象
    3. 获取SessionFactory
    4. 获取Session,打开事务
      注:Session对象持有必选的一级缓存对象,在显示执行flush之前,所有的持久化操作数据都在缓存中的Session对象处
    5. 用面向对象的方式操作数据库
    6. 关闭事务,关闭Session
    //CRUD(增删改查示例)
    Configuration conf = new Configuration().configure();

    SessionFactory sf = conf.buildSessionFactory();

    Session session = sf.openSession();

    Transaction tx = session.beginTransaction();

    User user_test = new User();
    user_test.setUserName("vfva");
    session.save(user_test);
    tx.commit();
    user_test = session.get(User.class,2);
    System.out.println(user_test.getUserName());
    user_test.setUserName("dahk");
    session.update(user_test);
    session.getTransaction().commit();
//        session.delete(user_test);
  • 随PO与Session的关联关系,PO的三种状态
    1. 瞬态:PO实例从未与Session关联过
    2. 持久化:PO实例与Session关联,且该实例对应到数据库记录
    3. 脱管:Session关闭,PO实例脱离了Session的管理
      三种状态的转化关系图
      这里写图片描述
    4. 三种状态的区别
      1、 有没有ID,(如果没有则是Transient状态)
      2、 ID在数据库中有没有
      3、 在内存里有没有(session缓存)
    5. 总结:
      1、瞬时对象:随时可能被垃圾回收器回收(在数据库中没有于之对应的记录,应为是new初始化),而执行save()方法后,就变为Persistent对象(持久性对象),没有纳入session的管理内存中一个对象,没有ID,缓存中也没有
      2、持久化对象:在数据库有存在的对应的记录,纳入session管理。在清理缓存(脏数据检查)的时候,会和数据库同步。
      3、离线脱管对象:也可能被垃圾回收器回收掉(数据库中存在对应的记录,只是没有任何对象引用它是指session引用),注引状态经过Persistent状态,没有纳入session的管理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值