冬眠多个架构映射(hibernate multiple schema mapping)

2019-07-05 02:05发布

我有一个Hibernate项目,以及多个实体。 每个实体需要连接多个数据库。 (表1,表2,表3,表4)相同的模式。

这能实现? 或者我需要建立一个独立的实体为每个吗?

我的实体是这个样子

@Entity
public class table1{
     @Id
     @Column(name="name")
     private String name;

     @Column(name="age")
     private String age;

     //getters setters
}

Answer 1:

您可以使用同一个实体具有相似的架构不同的数据库,但要创建EntityManager指向特定的数据库。

  • 创建持久性单元为每个数据库。

下面是persistence.xml中的示例代码

<persistence-unit name="DB_X"> 
<jta-data-source>java:/OracleDS</jta-data-source>  
... 
</persistence-unit>
<!-- Other Persistence Units -->

为特定单位创建的EntityManager

@PersistenceContext(unitName="DB_X")
private EntityManager xEM;

@PersistenceContext(unitName="DB_Y")
private EntityManager yEM;
  • 否则,还可以在运行时创建如下。

EntityManagerFactory的电动势= 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(){}
}

在这里, XEntityYEntity相似,但指向它们各自的表。



文章来源: hibernate multiple schema mapping