【问题标题】:Is it worth the effort to use JPA for SELECT statements?将 JPA 用于 SELECT 语句是否值得?
【发布时间】:2014-02-28 05:28:17
【问题描述】:

我正在制作一个连接到多个数据库的报告仪表板,目前我只是使用 java.sql 库来连接和构建我自己的连接类。

不过,我在业余时间也一直在做ticket monster 教程,它使用JPA 连接到数据库。

  • 当我只从数据库中读取数据时,是否值得努力映射所有内容?
  • 如何使用 JPA 连接到多个数据库?

(我会将其打包为 .war/.ear 以在 websphere 上运行。)

【问题讨论】:

  • 即使对于简单的 SELECT,使用 ORM 也很有用。您可以在架构定义(添加和删除列)中获得缓存、池化和很大的灵活性。
  • 那么,我可以创建一个只从表中选择某些列的对象吗?正如我在ticketmonster上使用的一样,它一直是定义表。
  • 可以,只要您排除的列可以为空(否则 SQL 语句将失败)。

标签: java sql jakarta-ee jpa


【解决方案1】:

这取决于您的应用程序。如果您有复杂的对象图,则可能值得使用 JPA 进行转换。 您可以为每个架构定义多个 EntityManager 对象。

【讨论】:

  • 就目前而言,它将有一个计数表,可能还有一个条形图。我想如果我想扩展功能,那么 JPA 将是一个优势。
  • 奇怪,我在 JPA 中找不到 SessionFactory (OP 在问什么)。一定是在说别的东西
【解决方案2】:

这就是我对JPA使用的看法

当我只从数据库中读取数据时,是否值得努力映射所有内容?

JPA 的一个主要用途是随着需求的增长使事情变得更加结构化和易于使用。如果您只需要显示一些有限数量的数据,请选择直接方式,但请确保在此之后结束。 构建和维护 JPA 减少了很多开销,它显着简化了数据库编程。我的建议是使用 JPA,因为它易于创建、易于配置并且会使代码看起来很漂亮。所以你为什么要走复杂的路。

如何使用 JPA 连接到多个数据库?

您可以使用许多注释,例如one to oneone to many 等。您可以查看here 以了解不同的获取策略。

在一个项目中使用多个数据库服务器。

首先让我告诉你一件事,JPA 类是一种对象关系映射工具。它与您使用的服务器无关。

您可以使用此指定架构名称

@Table(name = "TABLENAME", schema="DATABASENAME")

但这不会帮助您切换服务器。因此,如果要使用多个服务器,则必须创建多个连接。并执行相应的查询。

this 链接中已经说明了处理多个服务器。

【讨论】:

  • 我不需要数据库相互交互。我以为 oneToOne 和 oneToMany 是用来加入表格的?如何使用 xml 创建多个连接?干杯。
  • @ESP 连接在某种意义上..??你能详细说明你的要求吗?
  • 我有多个独立的数据库服务器。我需要在一个页面/应用程序中显示来自所有这些数据库的信息。如何设置与多个数据库(DB2、Oracle、SQL 服务器)的连接并在应用程序期间保持连接有效?
  • @ESP 多数据库与 JPA 无关。如果您使用来自数据库服务器的多个数据库,那么您可以使用 JPA 中的 database.table-name 指向 Db。但是在您的情况下,您需要从两个不同的 URL 获取数据,因此您必须创建单独的连接。然后单独执行查询。
  • 但是,您也可以在您的 persistence.xml 中添加多个持久性单元并使用它来访问单独的数据库。但是,如果您有一个属于持久性单元“A”的实体“Foo”,那么您将无法将“Foo”保存到持久性单元“B”。但是,你可以毫无问题地从 PU A 获得“Foo”,从 PU B 获得“Bar”。
【解决方案3】:

连接到多个数据库涉及设置多个数据源,并且您需要创建多个具有匹配 EntityManager 实例的持久性单元/EntityManagerFactory 实例,以便能够通过 JPA 单独访问这些不同的数据源。

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多