2011-07-14 16 views
5

estoy trabajando en este momento en un nuevo proyecto que ha siguiente requisito:interruptor JPA/Hibernate esquema de programación

Varios esquemas de bases son la celebración de los mismos mesas con estructura idéntica (en resumen: una entidad de varios esquemas) .

¿Es posible cambiar entre los esquemas de código? ¿Quieres que quiero lograr es:

El usuario selecciona el esquema B y actualiza algunas entidades en este. Después de esto, hace una inserción en el esquema A y así sucesivamente. Sé que podría hacerlo mediante JDBC básico proporcionando el esquema de las declaraciones, pero si puedo evitarlo, lo haría.

Tal vez en otro ORM Java puede hacer esto? Solo estoy familiarizado con JPA/Hibernate.

Saludos

Respuesta

2

Se puede utilizar por separado o SessionFactory s EntityManagerFactory s, uno para cada esquema. Dado que usted ha dicho que el usuario selecciona esquema A o B, puede usar algo como esto:

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); 
    } 
} 
+0

La solución no debe necesitar ninguna configuración adicional cuando se está ejecutando. Lo siento, no lo mencioné en mi pregunta – onigunn

+0

¿A qué se refiere con una configuración adicional? –

+0

Otros esquemas con este tipo de entidades se pueden importar a la base de datos en cualquier momento. Necesito algo que funcione dinámicamente. Obtención de los esquemas correspondientes por metadatos y accediendo a ellos – onigunn