关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) ) 等
在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文件中Lazy属性是全局控制的,如何处理呢?
在配置文件里面可以用lazy=true,在程序里面可以用强制加载的方法Hibernate.initialize(Object proxy) 方法强制加载这样就相当于动态改变为lazy=false。
但在使用时需要注意的一点是:其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写Hibernate.initialize(a.b)。
---------------------------------------------------------------------
使用Hibernate.initialize(Object obj)方法初始化一个代理对象或者集合
public class Query {
public static void main(String[] args) {
//打开Session取得Student对象,后关闭Session
Student student = getStudent();
//打开另一个Session.调用update()方法,因为在上面的Session关闭后,
//student对象成了脱管状态,在另一个Session中无法初始化一个脱管对象,必须重新关联
HibernateSessionFactory.getSession().update(student.getTeam());
//使用initialize方法初始化一个代理对象或者集合(此代理并不能保证内部嵌套的对象或者集合被初始化)
Hibernate.initialize(student.getTeam());
System.out.println(student.getTeam().getTeamname());
HibernateSessionFactory.closeSession();
}
public static Student getStudent() {
StudentDAO studentDAO = new StudentDAO();
Session session = studentDAO.getSession();
Student student = (Student) session.get(Student.class, "2c9ab2d516056609011605660e7e0001");
session.close();
return student;
}
...
}
分享到:
相关推荐
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:225) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService...
延迟加载类Lazy的使用示例。
NULL 博文链接:https://fkshl.iteye.com/blog/1178391
Ajax-jquery.initialize.zip,用于动态创建元素初始化的jquery插件(几年前很好,在2019年 考虑react或其他东西而不是jquery),ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和...
解决org.hibernate.LazyInitializationException: could not initialize proxy - no Session...
jquery.initialize 1.4.0 1.4.0 之前的最新更新:添加了子元素数据绑定。 最新更新至 1.3.0:数据属性、模板属性和字符串模板替换。 一个简单的 jQuery 元素初始值设定项上下文插件。 该插件使元素初始化并将定义...
初始化数组,对于在VC++编译环境下,该代码是非常有帮助的,可以让读者快速学习数组的应用。
\\.\Global\vmx86虚拟机启动过程中,报这种错误,然后启动不了。 本文档可以很好的解决这个问题。
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current ...
sexylightbox插件是lightbox繁衍而来,但它比lightbox更性感、更轻。演示地址:http://www.jq22.com/jquery-info535
NULL 博文链接:https://smartgwt.iteye.com/blog/1252268
XP系统在回放LoadRunner11录制脚本时提示“Vuser failed to initialize extension LrXml.dll”的解决方法
c# winform webkit C# 调用webkit
你只需要在 Application 里面调用Logcat.initialize一次即可完成初始化 //初始化Logcat Logcat.initialize(this); 配置更多信息 Builder builder = Logcat.newBuilder(); builder.logSavePath(StorageUtils....
这个版本可以支持jdk1.4及以上环境。 其他版本: ... SmartUpload 上传组件(中文终极解决版,包括中文文件名上传后乱码,中文参数,下载) 经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除...
initialize some custom attributes —— this step is not necessary, if you don't do it, it will use the default settings. TEmptyView.init(TViewUtil.EmptyViewBuilder.getInstance(context) .setShowText...
Ice.Object object = new HelloWorld_gaojs(); // 调用适配器的add,告诉它有一个新的servant,传递的参数是刚才的servant,这里的“gaojs”是Servant的名字 System.out.println("对象适配器加入servant..."); ...
[!... Restring 1.0 ...Initialize Restring in your Application class: Restring.init(context); or if you want more configurations: Restring.init(context, new RestringConfig.Builder() .persist(tru
Grafana源码编译–Windows 准备工作 1、系统:Windows 2、软件: (1)GO:尽量使用跟... (2)Git:版本没有要求,用于从github中clone源码到本地,用法如下: # 进入某个文件夹 ...# clone源码到该文件夹下 git cl
Initialize Contacts Library public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Contacts.initialize(this); } Get All Contacts List contacts = ...