4

我正在使用的数据库有许多具有相同列但具有(显然)不同的表名的表(我没有设计它)。例如(这些是数据库表名):

company1Data
company2Data
company3Data
etc.

是否可以使用 JPA 和休眠将这些映射到一个 Java 类实体?类的名称是Data, 然后在company1使用它时传入某个地方,以便对象使用company1Data表?

还是只使用普通的普通 Java 对象来做这样的事情会更好?

谢谢!

4

2 回答 2

1

从根本上说,这里的问题是糟糕的(非常糟糕的)数据库设计。理想情况下,您只需解决此问题。

如果你不能,我可以看到几种方法。

一种是通过继承对它进行建模,使用每个类映射的表。您将创建Data一个抽象实体,然后创建映射到每个表的琐碎的具体子类。这会起作用,但对于不受限于特定类的任何查询来说效率低下,因为它们将涉及查询多个表,并且使用起来很尴尬,因为您需要为每个表使用特定的类。

另一个是用视图来解决这个问题。创建一个视图,它是所有表的联合,然后映射它。这里的问题是您将无法插入其中。您可能可以在这里使用触发器做一些聪明的事情,但这将取决于您的数据库,并且比我拥有更多的数据库和 JPA 魔法!

于 2013-05-23T07:49:43.543 回答
0

在我看来,如果你使用 Hibernate,它对你来说会更快......

将 JPA 与 Hibernate 一起使用的最大优势是您不需要编写一些 sql 命令,例如插入和更新。

以下是一些可以从 Hibernate 开始的教程:

http://www.javacodegeeks.com/2012/05/tutorial-hibernate-jpa-part-1.html http://docs.jboss.org/hibernate/orm/3.6/quickstart/en-US/html/hibernate -gsg-tutorial-jpa.html

希望它有所帮助...

以下是有相同问题的人的一些主题:

如何使用 hibernate/jpa 注释将一个类映射到不同的表

JPA,如何使用同一个类(实体)来映射不同的表?

于 2013-05-23T07:27:01.393 回答