Tips: Hibernate y los prefijos de tablas

Un problema muy común al que nos llevamos tiempo enfrentando es el uso de prefijos de tablas en los entornos de producción. Si por ejemplo nos asignan el prefijo «SB_», la tabla que durante el desarrollo se llamaba «PERSONA» ahora pasa a llamarse SB_PERONA.

Al utilizar JPA/EJB3.0 este problema queda mitigado al utilizar la anotación @TABLE, pero nos sigue obligando a modificar todas las entidades de la aplicación para adaptarlas al nuevo prefijo.

Para solucionar esto, la especificación JPA contempla la posibilidad de establecer estrategias para la generación del nombre definitivo. Utilizando la implementación de Hibernate-entitymanager es tan sencillo como implementar nuestra propia clase NameStrategy e indicarla en persistece.xml.

1.- Indicamos a Hibernate la implementación que deseamos utilizar:

<--Configuración para el soporte de prefijos en Hibernate. Estrategia para generación de nombres de tablas asociadas a anotaciones Table JPA3.0.-->
<property name="hibernate.ejb.naming_strategy" value="com.viavansi.framework.persistencia.jpa.NamingStrategy"></property>

2.-Implementación, lo mas sencillo es sobreescribir el método String tableName(String tableName) de DefaultComponentSafeNamingStrategy que implementa la gestión de anotaciones JPA en Hibernate.

It’s a replace of prefix tables on Hibernate

Comentarios

Comments are closed.