Hibernate和具有相同数据/列但具有不同表名的表

时间:2013-05-23 07:00:53

标签: java database hibernate jpa persistence

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

company1Data
company2Data
company3Data
etc.

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

或者为这样的事情使用普通的普通Java对象会更好吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

从根本上说,这里的问题是一个糟糕的(真的,可怕的)数据库设计。理想情况下,您只需修复此问题。

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

一种是使用table per class映射为继承建模。您可以使Data成为一个抽象实体,然后创建映射到每个表的简单具体子类。这样做会有效,但是对于任何不限于特定类的查询都会效率低下,因为它们将涉及查询多个表,并且使用起来会很麻烦,因为您需要为每个表使用特定的类。

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

答案 1 :(得分: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

希望它有所帮助...

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

How to map one class to different tables using hibernate/jpa annotations

JPA, How to use the same class (entity) to map different tables?

相关问题