tablas relaciones relacionar relacionadas inner entre entidades ejemplos java java-ee jpa view ejb-3.0

java - relaciones - JPA y vistas de tabla. Se puede hacer?



relacionar entidades java (2)

Esta pregunta ya tiene una respuesta aquí:

Actualmente tenemos un sistema Java EE en el que estamos mapeando a nuestra base de datos utilizando JPA. Es un sistema bastante bien desarrollado con alrededor de 20 entidades.

Ahora se nos ha ordenado usar Vistas para todo. Por ejemplo: si tenemos una tabla llamada PERMISO, entonces también necesitamos una vista llamada PERMISSION_VIEW . Básicamente, necesitamos hacer esto en cada tabla, y nuestras aplicaciones solo pueden acceder a los datos consultando la vista.

Ahora todos nuestros beans de entidad se ven así:

@Entity @Table(name = "PERMISSION") @NamedQueries({ @NamedQuery(name = "Permission.findByPK", query = "SELECT p FROM Permission p WHERE p.dpNum = :dpNumber"), @NamedQuery(name = "Permission.deleteAll", query = "DELETE FROM Permission") }) public class Permission implements Serializable { }

  • En primer lugar, ¿cómo es posible actualizar las tablas si solo se le permite usar Vistas? ¿Pueden las Vistas materializadas funcionar para esto?
  • En segundo lugar, ¿cuánta reescritura será necesaria, si solo podemos usar Vistas? P.ej. Para cada una de ellas, tendremos que escribir @Table (name = "PERMISSION_VIEW") , para describir la entidad, PERO, al realizar una actualización, debe hacerlo en la tabla PERMISSION. ¿Cómo en la tierra se consolida esto en un bean entidad?

La mayoría de los RDBMS modernos admiten vistas insertables y actualizables. Si su RDBMS lo admite, entonces no debería tener ningún problema. Una vista que sea idéntica a una tabla debería poder actualizarse en cualquier RDBMS que admita tales vistas. Por lo tanto, solo necesita cambiar su asignación y reemplazar los nombres de las tablas con los nombres de vista.


Para obtener más información sobre JPA y las vistas de la base de datos, visite http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Views

En JPA puede asignar a una VIEW lo mismo que una tabla, usando la anotación @Table. Luego, puede asignar cada columna en la vista a los atributos de su objeto. Las vistas normalmente son de solo lectura, por lo que la asignación de objetos a las vistas también suele ser de solo lectura. En la mayoría de las bases de datos, las vistas también se pueden actualizar dependiendo de lo complejo que sea la consulta, ya que se encapsulan. Incluso para consultas complejas, los activadores de bases de datos normalmente se pueden utilizar para actualizar en la vista.