hibernate的session对象核心方法注意的问题
1.session.save()方法
1).session.save()方法会使一个对象从临时状态转变为持久化状态。
2).session.save()方法会赋予持久化对象的OID属性一个ID值,以对应数据库该条数据。
3).在session.flush()被调用时,session.save()方法会发送一条insert SQL语句。
4).持久化对象的OID值不能被修改,尝试修改会抛出异常。
2.session.persist()方法
1).session.persist()和save()方法的区别在于,如果临时对象的OID属性已经有ID值了,则不会执行insert语句,而会抛出异常。save()方法会忽略这个已有的ID值继续insert,然后再根据生成的ID覆盖掉已有的ID。
3.session.get()和session.load()方法
1)两者都会查询一条数据,返回该数据的持久化对象。
2)session.get()方法在调用后立即返回持久化对象,session.load()方法会返回一个代理对象,在对象的方法属性被调用时,再初始化加载该对象,实现延迟加载。
3)session.load()的代理对象如果没能完成初始化,而session.close()方法被调用了。则尝试加载时会抛出异常。session.get()方法得到的持久化对象在session.close()后依然可以使用,只是对象状态发生了变化。
4)如果查询不到值,session.get()方法返回null,session.load()方法返回的代理对象在初始化时抛出异常。