JPA / Hibernate以编程方式切换架构

时间:2011-07-14 19:09:51

标签: java database hibernate orm jpa

我正在开展一个有以下要求的新项目:

几个数据库模式持有相同结构的相同表(简而言之:一个实体用于多个模式)。

是否可以通过代码在这些模式之间切换?我希望实现的是:

用户选择架构B并更新其中的一些实体。在此之后,他在模式A中执行插入,依此类推。我知道我可以通过基本的JDBC为这些语句提供模式来做到这一点,但如果我能避免这样做,我会这样做。

也许其他一些java ORM可以做到这一点?我只熟悉JPA / Hibernate。

此致

1 个答案:

答案 0 :(得分:2)

您可以使用单独的SessionFactoryEntityManagerFactory,每个架构一个。 由于您说用户选择架构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);
    }
}