由於我的控制,我有兩個現有的數據庫幾乎是克隆。EclipseLink/JPA和具有相似結構的多個數據庫
「幾乎」,因爲在#2中不存在表格/列,反之亦然。
這裏最好的辦法是什麼?
「強力」路線似乎是「爲一個創建所有實體,複製到新軟件包併爲第二個數據庫添加/刪除」。這不是我真正想去的路線。
哦,JPA是絕對不允許改變其中任何一個數據庫架構。
除了EclipseLink,我使用Spring 3.1和SpringData。
由於我的控制,我有兩個現有的數據庫幾乎是克隆。EclipseLink/JPA和具有相似結構的多個數據庫
「幾乎」,因爲在#2中不存在表格/列,反之亦然。
這裏最好的辦法是什麼?
「強力」路線似乎是「爲一個創建所有實體,複製到新軟件包併爲第二個數據庫添加/刪除」。這不是我真正想去的路線。
哦,JPA是絕對不允許改變其中任何一個數據庫架構。
除了EclipseLink,我使用Spring 3.1和SpringData。
如果你的數據庫不同,你需要創建不同的類/映射。例如,如果你在有DB1 3列(id
,baz
,pleh
)和DB2其他3列兩個數據庫有一個表Foo
(id
,baz
,qux
),你可以這樣做:
@Entity
public class Foo
{
@Column(name = "id")
private Long id;
@Column(name = "baz")
private String baz;
@Column(name = "pleh")
private String pleh;
@Column(name = "qux")
private String qux;
}
這樣做會導致異常的JPA會產生插入語句,如:
insert into Foo (id, baz, pleh, qux) values (?, ?, ?, ?)
對於DB1,你需要創建一個類Foo
這樣的:
@Entity
public class Foo
{
@Column(name = "id")
private Long id;
@Column(name = "baz")
private String baz;
@Column(name = "pleh")
private String pleh;
}
而對於DB2這樣的:
@Entity
public class Foo
{
@Column(name = "id")
private Long id;
@Column(name = "baz")
private String baz;
@Column(name = "qux")
private String qux;
}
你可能要考慮的EclipseLink的可擴展性支持。
您可以向該類添加屬性映射,並使用orm.xml將其他數據庫中的其他屬性映射到該映射中。
請參閱: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Extensible_Entities