问题标签 [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.
hibernate - Spring + Hibernate + JPA:如何在运行时重新加载 EntityManagerFactory
过去几个小时我一直在寻找这个,也许你们中的一些人可以帮助我。
我尝试在春季运行时在 EntityManagerFactory(或 SessionFactory)中重新加载我的映射信息
EntityManagerFactory 定义如下:
在我的 persistence.xml 中,我只定义了映射文件所在的 jar
我的休眠映射文件会经常更改,我的应用程序正在使用这些文件来生成部分 UI。因此,我不想每次更改休眠映射时都重新启动服务器。
我想到的一件事是用一个新的替换 EntityManagerFacotries/SessionFactory
但我不知道副作用
另一种方法是在运行时以编程方式更改(添加/删除)EntityManagerFactory/SessionFactory 映射:
JPA:以编程方式将实体添加到 EntityManagerFactory 以编程
方式使用 JPA 2.0 加载实体类?
一个非常复杂的场景,没有找到解决方案
另一个主题提到动态JPA
如何合并/扩展来自不同 JAR 的持久性单元?
JPA 2.0:自动将实体类*从不同的 jar* 添加到 PersistenceUnit
我已经尝试像这样从春天更新整个应用程序上下文
但似乎这个项目不再受支持......
java - 管理只读副本和主数据库的多个会话工厂
在我们的应用程序中,我们有两个数据库,一个是主数据库,另一个是只读副本,仅用于报告目的。
我们的应用程序的某些部分对主数据库进行读写,而应用程序中的报告内容出于性能原因只读只读副本。
我们应该如何设计我们的 DAO 来为这两个目的公开 CRUD 操作?我们应该创建两个会话工厂并在 DAO 类中维护它吗?
请发表意见。
wcf - NHibernate 和 WCF:性能(会话重用)与并发(同时请求)
我们正在对大量结构相同的遗留数据库进行不同的集成,这些数据库基本上无法更改。为此,我们添加了一个辅助数据库,用于保存元信息、路由规则以及临时保存遗留数据库的数据。
我们主要使用 NHibernate 来连接数据库。一个应用程序是 WCF 服务,它需要将传入数据插入到非常宽(数十列)的嵌套表中。显然,性能是一个问题,所以我一直在寻找尽可能经济的 NHibernate 交易。同时,并发似乎是一个问题。在生产中,我们开始遇到一些僵化的事务错误(死锁)。
我一直在平衡处理这两个问题,但并没有真正消除并发问题。
服务行为设置为一次处理一个请求,如下所示:
早些时候,在互联网的一些“灵感”(阅读:复制/粘贴)之后,我最终添加了一组名为 XxxNHibernateUtil 的类,分别用于辅助数据库和遗留数据库。这些类控制 NHibernate Sessions 并从预初始化的 SessionFactories 生成或重用 Sessions。
对于辅助数据库,它看起来像这样:
每当事务需要会话时,都会在服务请求调用期间查找并重新使用当前会话。或者至少:这就是应该发生的事情。
编辑:会话上下文当然是在 hibernate.cfg.xml 中设置的,如下所示:
对于遗留数据库,NHibernateUtil 适用于处理不同的可能数据库。为此,每个连接都建立了自己的 SessionFactory,必须在 Dictionary 集合中查找。否则,原理相同。
使用 WCFStorm 进行测试,一次发送一个请求时这似乎工作正常,但是一旦我开始负载测试,即使只有一个代理和长间隔,我也会得到大量不同类型的异常,都指向同时请求和相互破坏的交易。我曾尝试调整 IsolationLevel,但现在可用。
我认为我需要以不同的方式生成和处理 Session,以便以有序的方式处理对同一数据库的不同事务,并且不会相互干扰。但是,我对如何完成这项工作缺乏一些见解。任何帮助是极大的赞赏!
编辑对于一种服务方法,当使用多个代理进行测试时,前十几个调用工作正常,然后开始出现以下仅与辅助数据库相关的异常字符串:
- “将 IDataReader 转换为 NDataReader 时出现问题”/“读取器关闭时调用元数据的尝试无效。”
- “非法访问加载集合”
- “开始失败并出现 SQL 异常”/“超时已过期。在操作完成之前超时时间已过或服务器没有响应。”
- “无法执行查询”/“ExecuteReader 需要一个打开且可用的连接。连接的当前状态为关闭。”
- “无法初始化集合:”/“超时。在操作完成之前超时时间已过或服务器没有响应。”
- “交易未成功启动”
- “事务要么与当前连接无关,要么已经完成。”
- “无法初始化集合:”/“读取器关闭时调用读取无效。”
至少,异常 1 表明同一个会话被多个线程访问(可能是调用)。其他的也表示当前会话被其他进程中断。但是,当我试图隔离呼叫并让它们排队时,这怎么可能呢?
对于另一种服务方法,辅助数据库不会出现这些问题,但一段时间后,我开始在遗留数据库的事务中遇到 ZombiedTransaction 异常(死锁)。仍然......什么给了?
java - 使用会话工厂的两个实例时出现 BeanCreationException
我创建了两个事务管理器(一个用于 READ 请求,另一个用于 READ-WRITE 请求)和两个会话工厂。
重要片段如下:
我正在尝试为 DAO 创建一个 bean 的那一刻,例如:
我收到BeanCreationException
以下错误消息:
org.springframework.beans.factory.BeanCreationException:创建名为“configurationDAO”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:public org.hibernate.SessionFactory com.amazon.im.dao.hibernate.GenericDAOImpl.sessionFactory;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义类型 [org.hibernate.SessionFactory] 的唯一 bean:预期单个匹配 bean 但找到 2:[SessionFactory,SessionFactory1]
我不能使用LocalSessionFactoryBean
,因为我想使用“annotatedClasses”属性。
关于为什么会发生的任何指示?我身边有什么遗漏吗?
java - 使用多个事务管理器时没有绑定到线程的休眠会话
我创建了两个事务管理器(一个用于 READ 请求,另一个用于 READ-WRITE 请求)和两个会话工厂。
重要片段如下:
我收到以下异常:
调用DAO的方法如下:
谁能指出我做错的部分?
java - Hibernate 开/关会话,DAO 的正确做法
我已经编写了这个 Hibernate 对象 DAO,但是通过这种方法,它使用了每次更新会话的方法(我认为这是不正确的)。
我认为它不正确的原因是我的 User 类遇到了问题,该类包含延迟获取的集合。因为当从 DAO 中检索每个用户时,会话被关闭。因此我无法获得我的收藏。
有时,由于对象已分离,它还会对表进行许多不必要的更新。
那么有什么方法可以修复我的 DAO,比如使用getCurrentSession()吗?
休眠实用程序
hibernate - Spring 3 集成测试——sessionFactory 初始化异常
当我运行我的 spring junit 测试时,我收到了这个错误消息:
……
你能帮我找出那个错误信息的原因吗?似乎我对 slf4j 的依赖项有一些问题 - 但我在项目中有它们。
测试类:
Spring测试上下文配置:
依赖项(来自 POM.XML 的版本):
hibernate - JBoss Hibernate 与 SessionFactory 和 JNDI 冲突
我正在 JBoss AplicationServer 上使用 ICEFaces 和 Hibernate 开始一个项目,现在我无法让 Hibernate 正常工作。
问题是我的 DAO 类无法获得 SassionFacade。我认为 Hibernate 没有创建一个因为与 JNDI 相同的冲突
到目前为止我做了什么:
用 MySQL 设置我的数据库。我使用了本教程:https
://community.jboss.org/wiki/DataSourceConfigurationInAS7
(我将 JDBC 驱动程序作为模型安装)不太确定它是否有效,因为当服务器启动时,看起来他正在加载其他驱动程序
比我几乎使用本教程的第一面:http:
//www.packtpub.com/article/developing-applications-with-jboss-and-hibernate-1
看起来它工作得很好,我看到了我的数据库和表,但标志会话工厂为空,并向我显示此警告:
我记得在同一点上,我在那里有相同的会话工厂,机器人不记得我改变了什么,他们diassapeard。
因为这只是一个警告,所以我继续教程并成功为我的表和 DAO 生成了类,而不是我编写了一个小测试程序并使用了一个 DAO 并得到以下错误:
这是服务器的standalone.xml
我的休眠配置(hibernate.cfg.xml)
从 Hibernate 生成的 DAO (PlattenHome.java)
以及我如何使用它:
我只是注意到,如果我现在在服务器启动后重建休眠配置,它会给我另一个警告
nhibernate - 具有多个数据库的 NHibernate Webapp 使用哪个 SessionContext
我们在 Web 应用程序中使用 NHibernate 和流畅的配置。
我们有一个配置数据库和多个保存客户数据的不同数据库。
对于每个数据库,我们在第一次使用时都会进行流畅的配置和 SessionFactory。
我们通过调用它的 OpenSession 方法来获取会话,并在我们处理完它时释放它。
但是,有时我们会收到一条错误消息,表明当我们尝试读取时 ADO 数据读取器仍然处于活动状态。表明 NHibernate 正在尝试(重新)使用相同的连接,这是我们试图避免的。
我们如何确保我们的数据库请求由连接以原子方式处理。(其他请求不得重复使用)
我想重新创建 SessionFactory 可能会起作用,但这似乎很昂贵
nhibernate - NHibernate 级联保存更新
我在通过在我的实体上级联 saveupdate 来保存关联时遇到问题。我有这个映射覆盖,并想通过级联保存它的一对多关联,但这不起作用。
对象本身被保存,但没有关联,我做错了什么?