问题标签 [sessionfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 无法将 HibernateQuery resuly 列表转换为 Object 类
我正在使用以下查询从休眠中的数据库中获取数据
但这是返回异常
我也尝试过这种方式,不知道在做什么
我再次遇到同样的异常。我怎么能用休眠来做到这一点?
谢谢
java - Hibernate 4 SessionFactory 范围的拦截器
我的 Java 应用程序使用 Hibernate 和 SessionFactory 范围的拦截器,以便在存储到数据库之前更改数据。
随着 hibernate 4.0 的发布,他们改变了使用类配置的概念。
所以我的新方法是:
我还没有找到用这种新方法设置拦截器的地方。关于如何设置 SessionFactory 范围的拦截器的任何建议?
hibernate - Hibernate、SessionFactoryObjectFactory 和 OutOfMemoryError:java 堆空间
在我工作的地方,我们的一个应用程序中遇到了 JVM 堆空间不足的问题。我已经对此进行了一些搜索,包括使用分析器查看堆转储,但现在我几乎陷入困境。
首先,关于所讨论的系统:它是一个 Java 应用程序,使用 Spring 和 Hibernate 来保存有关组织的记录。该系统由一组 Web 服务客户端组成,用于从负责此类数据的政府机构检索有关组织的数据。此外,系统将这些数据保存在本地数据库中,作为 Web 服务调用的缓存,以便第一次请求有关组织的信息时,将其保存在本地关系数据库中,用于检索以下请求的数据。Hibernate 用于与该数据库进行通信。
如前所述,问题是一段时间后,应用程序开始崩溃,并出现 OutOfMemoryError: java heap space。我查看了使用 Eclipse+MAT 的堆转储,并将罪魁祸首确定为 Hibernate 的SessionFactoryObjectFactory
,占用了大约 85% 的分配内存(全部保留内存)。我发现很难确定其中保存了哪些类型的对象。在顶层有 Glassfish WebappClassLoader
,其中包含org.hibernate.impl.SessionFactoryObjectFactory
. 包含在其中的是 a org.hibernate.util.FastHashMap
,而后者又包含 a java.util.HashMap
。这包含许多条目,每个条目都包含一个 HashMap 条目、一个org.hibernate.impl.SessionFactoryImpl
和一个字符串。HashMap-entry 又包含相同的三个对象,一个 HashMap-entry,一个SessionFactoryImpl
和一个字符串,这个结构会重复多次。SessionFactoryImpl
s 包含许多对象,最值得注意的是,org.hibernate.persister.entity.SingleTableEntityPersister
它包含许多 Strings 和 HashMaps。一些字符串引用域对象中的变量,一些包含 sql 语句。
乍一看,这个对象似乎占用了不必要的内存(转储文件为 800MB,其中 650MB 被 占用SessionFactoryObjectFactory
),所以我启用了对象加载和卸载的日志记录,并尝试向系统询问有关组织(通过来自另一个系统的 Web 服务调用)。我注意到这里有很多关于加载对象的消息,但很少有关于卸载对象的消息(唯一的消息是卸载库对象)。这让我相信一旦一个对象(比如一个组织)被加载到内存中,它就永远不会被卸载,这意味着随着时间的推移,系统将耗尽内存。(根据日志中发现的内容,这是一个公平的假设吗?)
然后,我试图找到造成这种情况的原因,但这要困难得多。由于 Hibernate 加载的对象将与它们的会话寿命一样长,我尝试通过将 Spring 的调用替换HibernateDaoSupport#getSession()
为HibernateDaoSupport#getSessionFactory().getCurrentSession()
. 这对问题没有明显的影响。我还尝试添加对 ... 的调用,getCurrentSession().flush()
并且.clear()
在一些有问题的道方法的 finally-block 中,也没有明显的效果。(Dao-methods都是用 注释的@Transactional
,这应该意味着一个会话应该只在@Transactional
-method内是活跃的,并且对该方法的连续调用应该在调用时获得不同的会话getCurrentSession()
(?))
所以,现在我在提出其他要检查的领域时几乎被卡住了。有没有人有关于在哪里寻找和寻找什么的想法或一些指示?
堆转储显示有很多实例org.hibernate.impl.SessionFactoryImpl
,这是否符合预期?(我原以为应该只有一个 SessionFactory 实例,或者几个顶部。)
编辑:
我想我实际上已经设法解决了这个问题:
事实证明,在 webservice-classes 中处理对其他对象的依赖是问题所在。这是通过ClassPathXmlApplicationContext(...)
在 web 服务类的构造函数中调用 new 来解决的。这导致为每个请求(或至少每个会话)加载大量对象,而这些对象没有再次卸载(主要是 Hibernate 的SessionFactoryImpl
)。我已经更改了 webservice-classes,因此它们注入了它们的依赖项,并形成了我迄今为止使用分析器看到的内容,多个SessionFactoryImpl
-objects 的问题已经解决。
我认为从 GlassFish 2.x 升级到 GlassFish 3.x 可能会加剧问题,这可能是关于如何实例化 webservice-classes 的一些差异。
hibernate - 为什么 session.save() 会引发更新查询?
这是我插入两个表的代码。但它给了我一个错误“批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1”
执行时,它给出这个用于记录目的。
我希望它在尝试更新时再次进行插入查询。请帮助我哪里错了。
java - 创建新的 Hibernate 会话工厂时的 TreeCache 问题
我正在使用带有 jboss-cache 3.2.5 的 Hibernate 3.1.13
我正在运行启用了二级缓存的应用程序,并且在应用程序中间(基于用户操作)我正在关闭现有的会话工厂(sessionFactory.close();)并创建一个新的。
到目前为止,我的二级缓存工作正常,在关闭并创建新的会话工厂后,我从 Treecache 收到以下错误。
错误
我的树缓存配置文件
=================================
我的休眠配置文件
感谢你们在这件事上的帮助
mysql - 我应该为 Spring 3.1.0、Hibernate 4.0.1.Final 和 MySQL 5.1 使用什么池数据源?
我正在使用 Spring 3.1.0.RELEASE、Hibernate 4.0.1.Final 和 MySQL 5.1。我应该使用什么汇集数据源?我目前正在使用(来自应用程序上下文文件的片段)......
但这不是池数据源,在每次调用时都创建 JDBC 连接。我曾经有这个 Hibernate 配置 (hibernate.cfg.xml) ...
但是由于 Spring 3.1.0 中的一个错误,我在配置会话工厂 bean 时无法使用 hibernate.cfg.xml 文件(我试图这样做——来自 spring 应用程序上下文文件的片段......)
nhibernate - asp.net 的最佳 Nhibernate 会话
我是 nHibernate 的新手,我需要一些专业人士的帮助。我想为长生命周期的 asp/net web 应用程序创建休眠会话,什么是最好的解决方案,因为我不想犯一些错误,例如客户端打开会话时间过长。有什么建议么?我看到了一些无状态会话的选项,但我不知道何时使用正常会话以及何时使用无状态有人可以解释一下吗?
nhibernate - 关于会话构建的休眠建议
我遇到了大问题,因为我对 nhibernate 没有那么经验,我需要为项目选择最佳会话解决方案,所以这里是会话使用示例:
- 会话打开并进行查询以填充 gridview
- 人员双击填充的 gridview 并使用编辑选项重定向到另一个页面
- 他编辑他从 gridview 获得的
对象 - 他保存对象并返回到 gridview
-Gridview 正在替换保存的对象
-他编辑另一个....
那么什么是对我来说最好的会话以及何时打开/关闭新会话。
spring - Spring和休眠:没有为当前线程找到会话
我得到以下错误
服务等级
一点 DAO 类
我的 application-context.xml 中有这个
谁能发现我为什么会收到以下错误?
spring - 无法获取 sessionFactory
我的带有spring和hibernate的java项目,无法获取sessionFactory。当我使用它时,它一直为空。配置:
Test.java 的主要代码是