我正在开展一个有以下要求的新项目:
几个数据库模式持有相同结构的相同表(简而言之:一个实体用于多个模式)。
是否可以通过代码在这些模式之间切换?我希望实现的是:
用户选择架构B并更新其中的一些实体。在此之后,他在模式A中执行插入,依此类推。我知道我可以通过基本的JDBC为这些语句提供模式来做到这一点,但如果我能避免这样做,我会这样做。
也许其他一些java ORM可以做到这一点?我只熟悉JPA / Hibernate。
此致
答案 0 :(得分:2)
您可以使用单独的SessionFactory
或EntityManagerFactory
,每个架构一个。
由于您说用户选择架构A或B,您可以使用以下内容:
public enum Schema {
A, B
}
public EntityDaoImpl {
// Create and populate the map at DAO creation time (Spring etc.).
private Map<Schema, SessionFactory> sessionFactoryBySchema = ...;
private Session getSession(Schema schema) {
SessionFactory sessionFactory = sessionFactoryBySchema.get(schema);
return sessionFactory.getCurrentSession(); // ... or whatever
}
public void saveEntity(Schema schema, Entity entity) {
getSession(schema).save(entity);
}
}