2011-07-24 22 views
5

Actualmente estoy trabajando en una aplicación que utiliza Hibernate y queremos poder insertar columnas y tablas sobre la marcha, es decir, en tiempo de ejecución, y continuar trabajando con la aplicación sin tener que reiniciarla. Actualmente estamos creando entidades, pero aún no las estamos usando. Tenemos código C antiguo (para ser migrado a Java algún día) que aloja nuestra lógica comercial y realiza llamadas a Java/Hibernate a través de JNI para obtener registros de la base de datos. Después de leer varios hilos (ver más abajo para los enlaces) y la referencia de hibernación 3.6 todavía tengo algunas preguntas:Agregar tablas y columnas en Hibernate sobre la marcha?

1. Si lo integrar SchemaUpdate en mi solicitud, como se ha mencionado aquí: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/toolsetguide.html#toolsetguide-s1-6 ¿Debo entonces tengo que recrear el SessionFactory (que es una operación costosa) incluso si no usaría las entidades (como es actualmente el caso, pero en el futuro, por supuesto, esto cambiará)? Entonces, la sesión anterior será inválida, es decir, ¿tengo que migrar las entidades que ya están en la memoria y mantenidas por la sesión, a la nueva sesión? ¿Es esto posible de alguna manera? ¿Hibernate mantiene información más allá del ORM para las entidades sobre los esquemas? No sería una (la sesión, es decir, primer nivel) la invalidación de caché será suficiente, como se propone aquí: changes to the schema while hibernate is running

2. ¿Qué hay de alterar las columnas? Supongo que todavía está como @Bozho escribió: "Por desgracia, Hibernate no puede alterar las columnas". Hibernate to update table schema

Estas son mis preguntas hasta ahora, gracias por cualquier ayuda.

Otras referencias que he leído:

+0

¿Alguna vez encontró algunas soluciones para esto? También estoy interesado, parece que Grails puede hacerlo con su marco GORM. – codevour

Respuesta

5

Sí, hay un buen artículo sobre InfoQ about adding fields dynamically.

+0

Muchas gracias por esta gran referencia. Actualmente estoy trabajando en otros proyectos, pero intentaré esto tan pronto como encuentre el tiempo. – juniper

+0

¿Podría resumir los puntos principales del artículo para reducir la dependencia de esta respuesta en un enlace? – Jasper

Cuestiones relacionadas