程序可以通过load()来加载一个持久化实例,这种加载就是根据持久化类的标识属性值加载持久化实例——其实质就是根据逐渐从数据表中加载一条新记录。
User existUser = session.laod(User.class, pk);上面代码中的pk就是需要加载的持久化实例的标识属性。
如果没有匹配的数据库记录,load()方法可能抛出HibernateException;如果在持久化注解中指定了延迟加载,则load()方法会返回一个未初始化的代理对象(可以理解为持久化对象的替身),这个代理对象并没有加载数据记录,直到程序调用该代理对象的某方法时,Hibernate才会去访问数据库。
如果希望在某对象中创建一个指向另一个对象的关联,又不想从数据库中装载该对象的同时立即装载所关联的全部对象,延迟加载方式就非常有用了。
与load()方法类似的是get()方法,get()方法也用于根据主键加载持久化实例,但get()方法会立刻访问数据库,如果没有对应的记录,get()方法返回null,而不是返回一个代理对象。
load()方法和get()方法主要区别在于是否延迟加载。
本文介绍了Hibernate框架中的两种加载策略:load()与get()方法。load()方法支持延迟加载,适用于需要按需加载关联对象的场景;get()方法则立即加载指定主键的数据,未找到记录时返回null。
417

被折叠的 条评论
为什么被折叠?



