hibernate多个模式映射
我有一个Hibernate项目和多个实体。 每个实体都需要连接到多个数据库。 (table1,table2,table3,table4)相同的模式。
这可以实现吗? 或者我是否需要为每个实体创建一个单独的实体?
我的实体看起来像这样
@Entity public class table1{ @Id @Column(name="name") private String name; @Column(name="age") private String age; //getters setters }
您可以对具有类似架构的不同数据库使用相同的实体,但必须创建指向特定数据库的EntityManager
。
- 为每个数据库创建持久性单元。
下面是persistence.xml的示例代码
java:/OracleDS ...
为特定单元创建EntityManager
@PersistenceContext(unitName="DB_X") private EntityManager xEM; @PersistenceContext(unitName="DB_Y") private EntityManager yEM;
- 否则,也可以在运行时创建它,如下所示。
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName); EntityManager em = emf.createEntityManager();
之后,您可以使用具有相似模式的不同数据库的相同实体,具有适当EntityManager
表结构。
编辑 :根据您的评论,与您发布的问题不同,您似乎正在尝试为多个表使用相同的实体。 下面是它的示例代码。
@MappedSuperClass public class abstract BaseEntity { @Id @Column(name="name") private String name; @Column(name="age") private String age; //-- accessor methods } @Entity @Table(name = "XTable") public class XEntity extends BaseEntity { public XEntity(){} } @Entity @Table(name = "YTable") public class YEntity extends BaseEntity { public YEntity(){} }
这里, XEntity
和YEntity
类似,但指向各自的表。