Схема переключения JPA / Hibernate программно - PullRequest
6 голосов
/ 14 июля 2011

Я сейчас работаю над новым проектом, который имеет следующие требования:

Несколько схем баз данных содержат одинаковые таблицы с одинаковой структурой (короче: один объект для нескольких схем).

Можно ли переключаться между этими схемами по коду? Хотите, я хочу достичь, это:

Пользователь выбирает схему B и обновляет некоторые объекты в этом. После этого он делает вставку в схему A и так далее. Я знаю, что мог бы сделать это с помощью базового JDBC, предоставив схему операторам, но если бы я мог этого избежать, я бы сделал это.

Может быть, какой-нибудь другой Java ORM может сделать это? Я знаком только с JPA / Hibernate.

Привет

1 Ответ

2 голосов
/ 15 июля 2011

Вы можете использовать отдельные 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...