同様のスキーマを持つ異なるデータベースに同じエンティティを使用できますが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 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
は似ていますが、それぞれのテーブルを指しています。