首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置hibernate以使用特定于上下文的连接信息?

如何配置hibernate以使用特定于上下文的连接信息?
EN

Stack Overflow用户
提问于 2009-04-23 22:18:30
回答 1查看 4.1K关注 0票数 1

我正在使用Hibernate编写Java (注,而不是 Java )应用程序,我需要为每个执行线程提供到Hibernate的不同连接。必须将这些连接池化,并且每个连接至少具有不同的身份验证,可能还有不同的JDBC。连接将被重用(可以从池需求推断)。

我必须覆盖Hibernate/C3P0/等的哪些部分?这能用这些工具实现吗,还是我需要编写自己的池数据源?

EN

回答 1

Stack Overflow用户

发布于 2009-04-24 19:35:13

我认为最好的做法是为每个数据源创建一个SessionFactory,其中可能包含集合连接--这就是eqbridge在他的回答中所建议的。

现在,Hibernate确实有一个ConnectionProvider钩子,所以我想您可以编写一个实现,根据当前的执行线程和一些附加参数,将Connection返回到不同的数据源。理论上,您可以有一个SessionFactory实例,它将使用自定义ConnectionProvider实现提供的到不同数据库的不同连接。但是,一个SessionFactory保存了相当多的数据,当打开一个工作单元的Session时,Hibernate内部就会使用这些数据。另外,还有一个与其相关的二级缓存。

不幸的是,在面对这样一个供应商时,工厂和Session的开放行为是谁都猜不到的。对我来说,这就像是一次黑客攻击,我怀疑它是否被认为是SessionFactory的可行用例。它可能导致各种,可能是非常微妙的错误或数据损坏。

另外,一定要准确地度量创建多个SessionFactories的成本--它可能不像您想象的那么高。一定要将其与简单地打开所需的JDBC连接的成本进行比较。我不知道你会得到什么样的结果,但我认为你应该确定性能在你采取更多的黑客解决方案之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/783773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档