显示地初始化Hibernate代理对象
Person person = (Person)session.load(Person.class,1);
if(!Hibernate.isInitialized(person)){
Hibernate.initialize(person);
}
session.close();
person.getName();
如果不显示的初始化Hibernate代理对象,且在session范围内程序没有访问Person导致Person没有初始化,在session关闭后再访问person对象,会抛出以下异常:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
这个东西还是挺有用的,如下:
对于懒加载的对象显示地初始化,既不延长session的范围,也阻止了出错.
Person person = (Person)test.session.get(Person.class,1);
Hibernate.initialize(person.getAddresses());//person.getAddresses()是一个set集合
session.close();
System.out.println(person.getAddresses());
分享到:
相关推荐
如果需要在事务外部使用这些对象,可以使用Hibernate的`initialize()`方法强制初始化代理对象。 值得注意的是,懒加载虽然能够提升性能,但也增加了系统复杂性。它可能导致难以预料的延迟,甚至在某些情况下引起...
3.5.1 Hibernate的初始化 3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 ...
测试代码显示了创建代理对象与调用 `openFile` 之间的区别,证明了代理模式可以有效地延迟对象的初始化。 代理模式有以下几种类型: 1. 静态代理:如上述示例所示,代理类和原始类在编译时已经确定,代理类是显式...
3.5.1 Hibernate的初始化 61 3.5.2 访问Hibernate的Session接口 63 3.6 运行helloapp应用 67 3.6.1 创建运行本书范例的系统环境 67 3.6.2 创建helloapp应用的目录结构 72 3.6.3 把helloapp应用作为独立应用程序...
(2)SessionFactory:初始化Hibernate,充当数据存储源的代理,创建Session对象。一个SessinFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。如果应用同时访问多个DB,怎需要为每个数据库...
3.5.1 Hibernate的初始化 61 3.5.2 访问Hibernate的Session接口 63 3.6 运行helloapp应用 67 3.6.1 创建运行本书范例的系统环境 67 3.6.2 创建helloapp应用的目录结构 72 3.6.3 把helloapp应用作为独立应用程序...
这是初始化Hibernate的核心,用于加载配置信息并生成SessionFactory。 3. SessionFactory 是所有Session的工厂,它负责管理所有数据库的连接。 4. Session 代表一次数据库会话,提供了与数据库交互的方法,如...
Configuration 对象只有在 Hibernate 进行初始化的时候才需要创建,当使用 Configuration 对象的实例创建了 SessionFactory 对象的实例后,其配置信息已经绑定在那个 SessionFactory 对象实例中。因此,一般情况下...
2. Hibernate配置:讲解如何配置Hibernate的XML文件,包括hibernate.cfg.xml和实体类的hbm.xml映射文件,以及如何在程序中加载和初始化Hibernate会话工厂。 3. 实体类和映射文件:详述如何设计和创建符合Java Bean...
SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只...
然后通过SessionFactory的创建,初始化Hibernate环境。 10. **最佳实践**: 使用Hibernate时,应遵循最佳实践,如合理设计实体关系,避免过多的JOIN操作,注意事务边界,以及正确使用缓存策略,以提升性能和减少...
1. **Configuration**: 这是初始化Hibernate的类,负责加载配置文件,建立SessionFactory对象。配置文件通常为`hibernate.cfg.xml`,其中包含了数据库连接信息、实体类的映射信息等。 2. **SessionFactory**: ...
SessionFactory的创建过程是Hibernate初始化的关键步骤。通过调用Configuration的buildSessionFactory()方法,会读取配置文件(如hibernate.cfg.xml),解析数据库连接信息、实体类映射信息,并生成SessionFactory...
Configuration用于配置和初始化Hibernate,SessionFactory是线程安全的,用于创建Session实例。Session是与数据库交互的主要接口,而Query则提供了对SQL的面向对象的封装。 二、配置与初始化 在Hibernate-3.2中,...
3.5.1 Hibernate的初始化 3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 ...
3.5.1 Hibernate的初始化 3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 ...
因此,在使用`load`时,应确保在适当的时间点初始化代理对象。 源码方面,`get`方法内部实际上是调用了`load`方法,然后立即初始化加载的对象。这意味着,即使你使用`get`,也有可能触发延迟加载机制,除非你使用的...
3.5.1 Hibernate的初始化 3.5.2 访问Hibernate的Session接口 3.6 运行helloapp应用 3.6.1 创建运行本书范例的系统环境 3.6.2 创建helloapp应用的目录结构 3.6.3 把helloapp应用作为独立应用程序运行 ...
1. 初始化:加载hibernate.cfg.xml配置文件,建立SessionFactory。 2. 创建Session:SessionFactory创建Session实例,每个数据库连接对应一个Session。 3. 开启事务:在Session上开启事务。 4. 持久化操作:对实体...