【问题标题】:Dynamic hibernate connection动态休眠连接
【发布时间】:2013-05-09 17:10:19
【问题描述】:

我们开发了一个使用 Hibernate 连接到现有 PostgreSQL 数据库的 JSF 应用程序。我们的每个客户都有自己的 PostgreSQL 数据库。是否可以仅动态托管一个应用程序 根据客户端用户登录连接到数据库(每个客户端都有一个 PostgreSQL DB)。

对于开发我们只使用一个客户端和一个带有 hibernate.cfg.xml 的 POJO 访问,我们需要将其更改为采用多个客户端。

  <property name='hibernate.connection.driver_class'>org.postgresql.Driver</property>
  <property   name='hibernate.connection.url'>jdbc:postgresql://testdev01/test_client</property>
  <property name='hibernate.connection.username'>username</property>
  <property name='hibernate.connection.password'>password</property>
  <property name='hibernate.connection.pool_size'>10</property>
  <property name='show_sql'>true</property>
  <property name='dialect'>org.hibernate.dialect.PostgreSQLDialect</property>

【问题讨论】:

  • 在创建 SessionFactory 时在运行时添加属性,有很多方法可以实现整个概念,因此请尽量具体说明您的要求。
  • 它是一个Claim entry Application 。当公司“A”用户登录时,他们应该连接到数据库 A_DB,B 用户登录时应该连接到 B_DB,依此类推。
  • 为此,两个用户都应该有一个共同的登录数据库,在他们登录后,应该对相应的会话工厂进行任何查询,这就是为什么您将在运行时添加属性和最好将工厂作为单例保存在内存中。
  • 这很有帮助,谢谢 Ziul

标签: hibernate postgresql jsf


【解决方案1】:

您可以完全以编程方式创建 SessionFactory,例如:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html。因此,一旦客户端登录您,就可以使用其数据库为该客户端创建单独的 SessionFactory。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2016-07-15
    • 2011-01-05
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多