问题标签 [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 - Spring + Hibernate 带注释:没有 Hibernate Session 绑定到线程
我是 Spring 新手,我正在尝试使用以下堆栈创建一个 webapp:Apache Tomcat 7、MySQL、Spring MVC、带有 JPA 注释的 Hibernate 3。
我正在尝试通过阅读 Craig Walls 的《Spring in Action,第三版》一书来学习。
首先,我想创建一个页面来显示我手动添加到数据库中的一些条目,但看起来我的应用程序无法从我的 SessionFactory 创建/检索任何 Hibernate Session。这是我的根本原因堆栈跟踪:
这是我关心的类/配置文件:
我的 HibernateDAO:
我的联系方式:
我的控制器类:
这是我的上下文数据配置文件:
这是我的 Dispatcher Servlet 配置:
最后,这是我的 web.xml 文件:
hibernate - Hibernate 和 Spring - 加载操作完成任务,更新/删除操作不完成
我一直在关注本教程: http ://www.scribd.com/doc/25244173/Java-Struts-Spring-Hibernate-Tutorial 设置(前面描述的)在教程文件中运行良好,但是当我做了更改 - 删除/更新操作不会发生。没有错误或怪癖,它完全忽略了我!至于检索数据-一切正常..
几乎所有来自 tut 的文件都是相同的,但有这些差异;本教程使用服务文件:
服务.java
我试图通过使用父控制器和对 HibernateUtil 的静态调用来分离文件: HibernateUtil.java
BaseController.java
事件控制器.java
和spring的applicationContext.xml
hibernate - 如何使用分布式 Ehcache 运行具有相同数据库模式的多个 Hibernate SessionFactories
我们有一个包含 n 个客户端(目前为 55 个)的系统,其中每个客户端都有自己的数据库,所有这些数据库都具有完全相同的模式。我们正在运行由分布式 ehcache 支持的休眠 3.6.1。这已通过 SessionFactoryService 使用每个数据库的 SessionFactory 实现,该 SessionFactoryService 在运行时“懒惰地”为每个 jvm 的每个客户端创建一个 SessionFactory(存储在 HashMap 中),因此我们正在运行一组应用程序管理的 SessionFactories。有一个基本的休眠配置文件,其余设置在创建时以编程方式完成。我们的存储库(或者更常见的 DAO)可以通过 SessionFactoryService 访问 SessionFactory。我们充分利用了由分布式 SingltonEhcacheRegionFactory 支持的休眠二级缓存。因为我们在每个 jvm 运行 n 个 SessionFactories,所以我们不想要一个 NON SingltonEhacheRegionFactory(即每个 SessionFactory 有一个 CacheManager),因为在尝试保持缓存之间的同步时,SessionFactories 之间会有太多的 jvm 间通信。所以我们想要的只是跨服务器的通信,而不是服务器内的通信,这是通过 SingltonEhcacheRegionFactory 实现的。
现在,这里是乐趣的开始。使用上述设置,将存在缓存冲突,因为无法保证唯一键作为数据库模式,因此支持它们的实体对象在 SessionFactories 中是相同的。为了使它们独一无二,我们通过上面的编程配置步骤将字段 hibernate.cache.region_pre-fix 设置为每个 SessionFactory 的唯一值。这满足了 Hibernate 对二级缓存的看法,但底层的单例 ehcache 现在存在问题。它找不到正确的配置,因为 ehache.xml 配置文件中指定的配置在缓存名称上没有缓存前缀(也不能,因为每个前缀的每个缓存配置都必须有一个重复条目,其中有n个)。这会导致以下错误:
10:37:38,389 WARN AbstractEhcacheRegionFactory:201 - 在 Hibernate 配置中找不到 TransactionManagerLookup,XA 缓存将参与两阶段提交!10:37:39,675 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.adc] 的缓存的特定 ehcache 配置;使用默认值。10:37:40,328 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.org.hibernate.cache.UpdateTimestampsCache] 的缓存的特定 ehcache 配置;使用默认值。10:37:40,331 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.org.hibernate.cache.StandardQueryCache] 的缓存的特定 ehcache 配置;使用默认值。
那么问题来了,我们如何才能在每个 jvm 环境中使用分布式单例 ehcache 来完成多个 SessionFactory?有没有办法将 ehcache 配置为区域前缀感知?我们实施的解决方案充其量只是hacky。我们已经实现了自己的 hibernate.cache.region.factory_class,它扩展了 SingltonEhcacheRegionFactory(并删除了 hibernate 缓存区域前缀配置)。我们的实现所做的只是拦截对底层 Ehcache 的方法调用,并为所有用于缓存操作的键附加一个前缀,从而防止缓存冲突。我们想要一个更“开箱即用”的解决方案,出于显而易见的原因,尽管它有效,但我们实施的方案并不理想。我已经阅读了我可能找到的关于此事的所有内容,但没有 t 找到了一个解决方案,该解决方案使用分布式二级缓存使用相同的模式(最重要的是)处理多个 SessionFactories。任何想法、解决方案或建议将不胜感激。如果有人有解决需求的好方法,我什至对完全不同的设计持开放态度。提前致谢!
fluent-nhibernate - 如何使这个线程安全
我有以下用于 Fluent NHibernate 的 SessionFactory。
我收到一个错误
创建 SessionFactory 时使用了无效或不完整的配置。
带有 InnerException
已添加具有相同密钥的项目。
这个问题只是偶尔发生,我的应用程序大部分时间都可以正常工作。
基于NHibernate:System.Argument 异常:已添加具有相同密钥的项目我猜我的类不是线程安全的,这可以解释此错误的间歇性。
nhibernate - StructureMap 中具有多个 nHibernate 会话工厂的命名单例实例 (StructureMap 2.5.4)
我有与StructureMap 中的命名单例实例(多个 nHibernate 会话工厂)中描述的完全相同的场景
如果我使用 StructureMap 2.6.2 实现它 - 太好了!
但是,由于遗留项目中涉及的各种因素无法使用最新的 .NET 框架版本以及其他一些原因,我目前必须使用 StructureMap 2.5.4。假设在可预见的未来我无法升级这个问题。
2.5.4 的语法显然与 2.6.2 完全不同,我不知道如何使用它的 API 来实现相同的东西。
特别是这东西
...使用名为 CreateSessionFactory(string) 的方法创建相关配置。
“Add”和随后的“GetInstance”是无效的,需要重构才能与 2.5.4 一起使用——我太笨了,无法弄清楚如何实现,或者如果你确实可以实现同样的事情。
干杯
java - Hibernate SessionFactory 与 JPA EntityManagerFactory
我是 Hibernate 的新手,我不确定是使用 HibernateSessionFactory
还是 JPAEntityManagerFactory
来创建 Hibernate Session
。
这两者有什么区别?使用它们各自的优点和缺点是什么?
nhibernate - 流畅的NHibernate?我这样做正确吗?
我是第一次使用 Fluent NHibernate 和 NHibernate 的新手。自大约 2000 年以来,我一直在使用内部编写的自定义书面映射器。大约 2 年前切换到 LinqToSQL,大约 6 个月前切换到实体。
我想看看 Fluent/NHibernate 能提供什么。但是,我似乎无法让它正确运行。以下是我的课程、他们的参考资料、ClassMaps 的副本。有人能告诉我这个简单的实现是否正确吗?
这是我的映射和对象类:
这是我的存储库:
每当它到达 config.BuildSessionFactory() 时,它都会引发以下错误:
创建 SessionFactory 时使用了无效或不完整的配置。
内部异常是:
调用的目标已引发异常。
这是解决这个问题的正确方法吗?任何想法或调整将不胜感激!
c# - 具有后台工作人员的 Web 应用程序的休眠会话管理策略?
对于 Web 应用程序,处理会话的好方法似乎是使用设置<property name="current_session_context_class">managed_web</property>
,调用CurrentSessionContext.Bind/Unbind
Begin/EndRequest。然后我可以sessionFactory.GetCurrentSession()
在存储库类中使用。
这适用于所有页面请求。但是我有后台工作人员在做事情并使用相同的存储库类来做事情。这些不在网络请求中运行,因此会话处理将不起作用。
关于如何解决这个问题的任何建议?
nhibernate - NHibernate:构建会话工厂是否涉及连接到数据库?
将数据库迁移到新服务器后,我的工作副本无法再连接到数据库。但我正在经历一些我没想到的事情。每当应用程序中的页面尝试连接到该数据库时,在会话工厂的构建过程中就会发生错误,即在 ISession 尝试显式连接(例如加载实体)之前。
这是正确的吗?为什么构建会话工厂需要连接到数据库?
nhibernate - NHibernate:使用 SchemaExport 重新创建数据库
我有一个关于正确处理数据库重建的问题。
在我的开发环境中,我经常使用重新创建数据库
(我必须注意,我使用的是hilo 生成器。)在我重新创建数据库之后,有时新实体的保存会因为" Cannot insert duplicate key...
" 异常而失败。
我的问题: 我是否必须重新初始化会话工厂(甚至可能是会话)才能与新的使用 hilo 的数据库正确同步?还是让它按原样工作?
任何提示表示赞赏!
华拉巴