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

oni*_*unn 6 java database orm hibernate jpa

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

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

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

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

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

问候

Nic*_*lbu 2

您可以使用单独的SessionFactorys 或EntityManagerFactorys,每个模式一个。既然您说用户选择模式 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);
    }
}
Run Code Online (Sandbox Code Playgroud)