使用注释在休眠中动态地将POJO映射到表

时间:2012-05-09 07:00:00

标签: java hibernate jpa dynamic hibernate-mapping

在我的数据库中,我有大约20多个名为'a_emp_transactions','b_emp_transaction'的表,等等,所有表的表结构相同。基本上这些表格是根据员工的姓名划分的。

现在我想使用hibernate对这些表进行CURD操作,但我不想为每个表创建POJO。因为,只有表的名称不同并且具有相同的结构,有没有办法使用单个POJO并使用注释基于当前员工名称动态地将POJO映射到表?

2 个答案:

答案 0 :(得分:1)

我认为您的数据库架构存在一个很大的缺陷。 为什么在使用具有相同字段的ONE +“EmployeeName / ID”字段时使用20多个表?

通过这种方式,您可以将POJO映射到单个表,而恕我直言,这将是一个更加一致的架构。

答案 1 :(得分:0)

您可以使用Hibernate Shards来实现这一目标。基本上,Hibernate Shards允许您指定“分片”策略。它可以是跨不同数据库服务器的数据分发,也可以只是单独的表(因为它似乎是你的情况)。您当然希望制定自己的策略,因为我不相信现有的例子会完全覆盖您的案例:-)

http://docs.jboss.org/hibernate/stable/shards/reference/en/html/shards-shardstrategy.html

顺便说一下:我不确定Hibernate Shards是否允许你更改映射实体的表名(也许它是可能的,我只是不知道)。在任何情况下:如果不可能,您可以创建不同的Hibernate命名策略,并使用不同的命名策略使用每个分片。