Hibernate加载策略

xiaoxiao2025-10-16  8

对象的三种状态(hibernate管理的对象) 1.1 临时状态 1.2 持久状态 1.3 游离状态 hibernate通过管理对象来操作数据库,这里对象指的是持久态的对象。 各种状态的对象是可以相互转换。

2.一级缓存、快照(orm特性)

Transaction transaction = session.beginTransaction(); User user = session.get(User.class, 2); System.out.println(user.getUserName()); user.setUserName("呵呵"); transaction.commit(); session.close();

一级缓存又被称为session级别的缓存

1.相当于数据库中的某一条数据在hibernate中产生一个快照,并且将值封装进对象2.user如果说发生改变,那么它会与hibernate中的快照进行对比,如果说不一致,那么就会修改数据库中的数据。 加载策略 1 立即加载 /** * get立即加载 * @param user * @return */ public User get(User user) { Session session = SessionFactoryUtil.getSession(); Transaction transaction = session.beginTransaction(); System.out.println(123); User u = session.get(User.class, user.getId()); System.out.println(456); System.out.println(u.getUserName()); transaction.commit(); session.close(); return u; }

2 延迟加载( 懒加载) 什么是懒加载? * 将查询的oid(object id)保存到session的代理proxy中,当要真正用到 * 查询的对象的时候,再去执行查询SQL语句。

/** * 懒加载, * @param user * @return */ public User loadget(User user) { Session session = SessionFactoryUtil.getSession(); Transaction transaction = session.beginTransaction(); System.out.println(123); User u = session.load(User.class, user.getId()); // System.out.println(456); // System.out.println(u.getUserName()); transaction.commit(); session.close(); return u; }
转载请注明原文地址: https://www.6miu.com/read-5038001.html

最新回复(0)