我正在使用的数据库有许多具有相同列但具有(显然)不同的表名的表(我没有设计它)。例如(这些是数据库表名):
company1Data
company2Data
company3Data
etc.
是否可以使用 JPA 和休眠将这些映射到一个 Java 类实体?类的名称是Data
, 然后在company1
使用它时传入某个地方,以便对象使用company1Data
表?
还是只使用普通的普通 Java 对象来做这样的事情会更好?
谢谢!
我正在使用的数据库有许多具有相同列但具有(显然)不同的表名的表(我没有设计它)。例如(这些是数据库表名):
company1Data
company2Data
company3Data
etc.
是否可以使用 JPA 和休眠将这些映射到一个 Java 类实体?类的名称是Data
, 然后在company1
使用它时传入某个地方,以便对象使用company1Data
表?
还是只使用普通的普通 Java 对象来做这样的事情会更好?
谢谢!
从根本上说,这里的问题是糟糕的(非常糟糕的)数据库设计。理想情况下,您只需解决此问题。
如果你不能,我可以看到几种方法。
一种是通过继承对它进行建模,使用每个类映射的表。您将创建Data
一个抽象实体,然后创建映射到每个表的琐碎的具体子类。这会起作用,但对于不受限于特定类的任何查询来说效率低下,因为它们将涉及查询多个表,并且使用起来很尴尬,因为您需要为每个表使用特定的类。
另一个是用视图来解决这个问题。创建一个视图,它是所有表的联合,然后映射它。这里的问题是您将无法插入其中。您可能可以在这里使用触发器做一些聪明的事情,但这将取决于您的数据库,并且比我拥有更多的数据库和 JPA 魔法!
在我看来,如果你使用 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
希望它有所帮助...
以下是有相同问题的人的一些主题: