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; }