Anteriormente desarrollé un proyecto en Visual Basic 2013 y Oracle Database 11.2g. Mi capa de persistencia por llamarlo de alguna forma era una clase con 3 procedimientos:
Código:
Devuelve uno o mas registros según la instrucción sql
Public Function leerRegistros(ByVal instruccionSQL As String) As DataTable
'Codigo
End Function
'Devuelve un valor escalar según la intrucción sql
Public Function leerDato(ByVal instruccionSQL As String) As Object
'Código
End Funtion
'Ejecuta un insert o update según la instrucción SQL
Public Sub modificarBaseDatos(ByVal instruccionSQL As String)
'Código
End Sub
Eso me resolvió la vida en aquel proyecto, si se dan cuenta es fácil de hacer operaciones con la base de datos.
Hoy en día estoy realizando un proyecto web con Java, tengo que usar procedimientos almacenados e implementar MVC. Me he encontrado con mucha información que no logro asimilar. He visto ejemplos donde usan frameworks como EJB y JPA y otros donde no los utilizan, pero en cuanto al tema de la persistencia la idea es la misma: utilizar clases de entidad que representen a las tablas en la base de datos.
Volviendo a mi proyecto en VB, con las dos primeras funciones podía seleccionar de forma precisa los datos que yo queria obtener, solo bastaba con formar adecuadamente la instrucción SQL. Ahora en el proyecto de Java me surguen varias dudas:
1) Suponiendo que tengo la clase Empresa que representa a una tabla con 10 campos y sólo necesito obtener los datos de 2 campos ¿Téngo que buscar la empresa en la base de datos y llenar los 10 atributos de la clase? Para mi esto supone un problema de trabajo extra para el RDBMS.
2) La tabla Empresas tiene una clave foránea que es el id del estado donde se ubica. Si en la aplicación lo que queiro es obtener el nombre del estado ¿Cómo realizo esto?
3) En base de datos existen lo que se llaman vistas que pueden ser el resultado de una consulta de unión de distintas tablas. ¿Si quiero obtener los datos de una vista tengo que crear una clase de entidad que respresente a la vista?