miércoles, 1 de abril de 2009

Vistas materializadas en Hibernate

Recientemente he descubierto las posibilidades de una característica de Hibernate que puede parecer obvia para todos aquellos usuarios avanzados, pero que no lo es tanto y que además puede pasarse por alto fácilmente en la documentación.

Hibernate permite crear vistas de datos (una query precalculada) en el mapping de un objeto, pero la gran virtud que le encuentro a este mecanismo es la posibilidad de crear vistas materializadas (en Oracle se llama así), que no es otra cosa sino una vista de datos que crea una tabla que se actualiza al trabajar con la vista.

En el mapping podemos definir la vista como una consulta SQL en el tag subselect y user el tag synchronize para definir las tablas con las que sincronizaremos la vista.

Veamos un ejemplo extraido de la documentación de hibernate (apartado 5.1.3)

2 comentarios:

  1. Gracias por el post Jesús, es muy interesante. ¿Por casualidad sabes si con anotaciones también se podría hacer?

    Saludos,
    Grego

    ResponderEliminar
  2. Parece que no se puede. En el JIRA de Hibernate hay varias solicitudes de mejora referentes a esto, pero aún no se ha desarrollado.

    De todas formas no me parece extraño, ya que hay muchas cosas que se pueden hacer con mappings pero no con anotaciones, una pena.


    P.D: enlace al JIRa
    http://opensource.atlassian.com/projects/hibernate/secure/IssueNavigator.jspa?

    ResponderEliminar