Una de las curiosidades de todo desarrollador acostumbrado a ORM como JPA es saber si este soporta vistas.
Las vistas de bases de datos son muy utilizadas y en muchas ocasiones tendremos que leer alguna de ellas. No soy detractor de este tipo de consultas (a diferencia de los StoredProcedures, de lo cual considero un error de la ingeniería de software). Por lo tanto, tarde o temprano debemos leerlas en nuestro sistema.

JPA nos posibilita “mapear” una vista sin problemas. Claro está, la misma solo deberá ofrecer una modalidad de lectura, no podemos hacer transacciones con ella. Lo bueno es que podemos generar un Beans con los atributos de la vista y mapear como si fuera una simple tabla de nuestra Base de Datos.

El requisito a seguir es: Toda entidad debe tener un identificador de acuerdo a la especificación.

Entonces, ya sabemos que las vistas no la vamos a desechar. Incluso estas siguen estando fuera de nuestro JAR o WAR para cualquier cambio no estructural.

Extracto original:

Views

A database VIEW is a virtual view of a table or query. Views are useful for hiding the complexity of a table, set of tables, or data-set.

In JPA you can map to a VIEW the same as a table, using the @Table annotation. You can then map each column in the view to your object’s attributes. Views are normally read-only, so object’s mapping to views are normally also read-only. In most databases views can also be updatable depending on how complex to query is that they encapsulate. Even for complex queries database triggers can normally be used to update into the view.

Views can often be used in JPA to workaround mapping limitations. For example if a table join is not supported by JPA, or a database function is desired to be called to transform data, this can normally be done inside a view, so JPA can just map to the simplified data.

Using views does require database expertise, and the definition of views can be database dependent.

Anuncios