`
jiagyao
  • 浏览: 99348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

(转)Hibernate.initialize(Object proxy)

阅读更多
关于延迟加载(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;
}
...
}
分享到:
评论

相关推荐

    Lazy.Object.Initialize

    在描述"延迟加载类Lazy的使用示例"中,我们可以预期在`Lazy.Object.Initialize.Console`这个项目中包含一个使用`Lazy<T>`的控制台应用程序示例。这个示例可能展示了如何在多线程环境中利用`Lazy<T>`确保安全初始化,...

    HIbernate4.3.6整合c3p0所需jar

    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:225) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService...

    解析 this.initialize.apply(this, arguments)

    标题 "解析 this.initialize.apply(this, arguments)" 涉及到的是JavaScript编程中的一个关键概念,尤其是在对象构造和类继承的情景下。`this` 关键字在JavaScript中扮演着核心角色,它指的是函数调用时的上下文,而...

    集成spring的hibernate懒加载

    当你尝试在Controller层或者视图层访问懒加载的属性时,如果Session已经关闭("no Session..."错误),就会抛出`org.hibernate.LazyInitializationException`。这是因为懒加载的代理对象需要Session来执行数据库查询...

    Ajax-jquery.initialize.zip

    Ajax-jquery.initialize.zip,用于动态创建元素初始化的jquery插件(几年前很好,在2019年 考虑react或其他东西而不是jquery),ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和...

    jquery.initialize:一个简单的 jQuery 元素初始化器上下文插件

    jquery.initialize 1.4.0 1.4.0 之前的最新更新:添加了子元素数据绑定。 最新更新至 1.3.0:数据属性、模板属性和字符串模板替换。 一个简单的 jQuery 元素初始值设定项上下文插件。 该插件使元素初始化并将定义...

    Hibernate映射导致的几个异常

    Could not initialize proxy - the owning Session was closed 这是Hibernate懒加载机制中的常见异常,当尝试访问一个已被关闭的Session中的懒加载属性时触发。例如,如果Session在使用`setFetchMode(FetchMode....

    Hibernate配置常见错误

    错误表现:在Session关闭后尝试访问懒加载属性,抛出“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常。 解决方案:理解并合理使用Open Session in View(OSIV)模式...

    虚拟机初始化不了

    \\.\Global\vmx86虚拟机启动过程中,报这种错误,然后启动不了。 本文档可以很好的解决这个问题。

    J2EE利用Hibernate采用B/S架构网页设计

    import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current ...

    Hibernate 文档

    例如,`<property name="dialect">org.hibernate.dialect.MySQLDialect</property>` 指定了 MySQL 数据库的方言。 在 Hibernate 中,CRUD(Create, Read, Update, Delete)操作是通过 Session 接口完成的。Session ...

    hibernate配置要点详谈

    - 支持`java.util.Set` 或 `net.sf.hibernate.collection.Bag` 类型的集合。 #### 八、多对多关系 - **多对多关系**: - 注意双方都需要设置`inverse`和`lazy`属性,`cascade`属性只能设为`insert-update`。 - ...

    hibernate validator

    Hibernate Validator 是一个强大的Java Bean验证框架,它是Hibernate项目的一部分,实现了JSR-303(Bean Validation 1.0)和JSR-349(Bean Validation 1.1)标准,提供了对对象模型的验证功能。在版本5.1.2.Final中...

    Hibernate学习笔记

    如果需要立即加载对象,可以使用`Hibernate.initialize()`方法。 在映射文件中,我们需要为Java类型指定对应的Hibernate类型,例如: - 基本类型及其封装类:整数、浮点数、字符型、布尔型等。 - 字符串:使用`...

    hibernate多对多关联映射

    `org.hibernate.persister.collection.AbstractCollectionPersister`和`org.hibernate.action.internal.CollectionRemoveAction`等类是处理多对多关联删除的关键。通过阅读源码,我们可以了解到Hibernate如何处理...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    jce_policy-8.zip

    Unable to initialize due to invalid secret key at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:120) at org.springframework.security.crypto.encrypt....

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>OpenSessionInViewFilter *.action ``` 在上面的配置中,我们定义了一个名为 OpenSessionInViewFilter 的 ...

    c# winform 调用webkit

    InitializeComponent(); // 初始化WebKit.WebView _webView = new WebView(); _webView.FrameLoadEnd += WebViewOnFrameLoadEnd; // 监听页面加载完成事件 _webView.ScriptDialog += WebViewOnScriptDialog; /...

    hibernate5.0.9源码

    源码中,`FetchMode`和`Hibernate.initialize()`等相关实现展示了这些优化技术的细节。 9. **事件监听器** Hibernate支持事件驱动的编程模式,如`PreLoadEventListener`、`PostInsertEventListener`等。源码中,`...

Global site tag (gtag.js) - Google Analytics