【问题标题】:plain jdbc and hibernate纯 jdbc 和休眠
【发布时间】:2011-05-01 07:39:54
【问题描述】:

我有一个项目运行了几年,它使用普通的 JDBC。

现在我必须实现一个我正在考虑使用 Hibernate 的小模块。我配置了 Hibernate (hibernate-cfg.xml),它已经启动并运行了。

所以我在 oracle-ds.xml 和 hibernate-cfg.xml 两个地方定义了数据库属性

  1. 是否可以在单个应用程序中混合使用 JDBC 和 Hibernate,如果不能,有什么问题?
  2. 是否需要在 Hibernate 配置和 oracle-ds.xml(JBoss 应用服务器)中配置“连接池”?
  3. 我曾想过使用 JNDI 配置休眠,但这需要 mbean、HAR,这是额外的工作,而且这个新模块将很少使用。或者我是否应该将其作为 JBoss 服务,以便由容器处理连接池?
  4. 我可以使用普通 JDBC,但团队想尝试 Hibernate,如果一切正常,我们正在考虑在下一个项目中全职使用 Hibernate。

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    我们在同一个应用程序中混合了这两者,没有任何问题。我将服务器设置为管理连接池,以便它们最终在 JDBC 代码和休眠代码之间共享。

    您必须记住的一件事是休眠将数据缓存在内存中,因此如果您直接更改休眠表,应用程序仍将继续查看缓存中的旧数据。如果关闭缓存,性能会受到很大影响。它可以节省您的编码,但您会失去很多灵活性。很难通过数据库与其他应用程序集成,并在站点之间进行复制等操作。

    【讨论】:

    • 谢谢。你知道我是如何让服务器管理连接池的吗?现在我在 hibernate config 和 oracle-ds.xml 文件中定义了“连接池大小”。
    • 我明白了。我使用了 oracle-ds 文件中的 JNDI 名称,它起作用了。谢谢!
    【解决方案2】:

    在单个应用程序中混合 jdbc、hibernate 可以吗?如果不是,有什么问题?

    这是可行的,但您需要采取一些预防措施:

    • 您不能轻松地将 JDBC 处理的 POJO 混合到 Hibernate 处理的对象的图中(因此请尝试将 Hibernate 用于图中最深的对象或完全休眠的图)。
    • 我猜你有一些并发机制,对 JDBC 和 Hibernate 使用相同的机制(即从 JDBC 和 Hibernate 增加相同的版本列)。
    • 如果您将 Hibernate 配置为使用 2 级缓存,Hibernate 将不会意识到不使用其 API 所做的更改(因此您可能必须实现一些驱逐机制)。

    是否需要在休眠配置和 oracle-ds.xml 中配置“连接池”

    我会将 Hibernate 配置为使用应用服务器连接池(请参阅Hibernate Datasource Properties)。

    我曾想过使用 JNDI 配置休眠,但这需要 mbean,HAR 那是额外的工作,而且这个新模块将很少使用。或者我应该把它作为一个 jboss 服务,以便连接池由容器处理吗?

    您不需要使用 JBoss 服务或使用 HAR 来使用连接池,请参阅上面的链接。我暂时不会为此烦恼,在我看来,这是非常低优先级的事情。首先,引导第一个原型,看看它如何适合您现有的代码,需要更改的内容等。

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 2010-11-24
      • 2013-06-13
      • 2023-03-25
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多