Capa de acceso a datos
El patrón DAO (Data Access Object)
El acceso a datos se realiza mediante el patrón DAO (Data Access Object).
Para ello el Framework PA dispone de una interface base denominada PrincastDAO que
deben de implementar todos los DAOs, o extender de una clase que la implemente.
Esta interfaz posee un único método denominado getConnection() que devuelve la conexión con
la base de datos que utiliza el objeto DAO.
El Framework PA proporciona una clase de utilidad para facilitar la implementación de objetos DAO
denominada PrincastDAOHelper. Este tipo objetos siempre debe estar asociado a un objeto DAO.
Los objetos PrincastDAOHelper se caracterizan por la capacidad de cargar consultas SQL desde un fichero .properties
Las consultas SQL del fichero de properties
pueden tener parámetros, utilizándose para ello el carácter "?" de forma análoga a los
PreparedStatement. Los métodos públicos de esta clase son los siguientes:
- PrincastDAOHelper(Class). Constructor que recibe como parámetro el nombre de la clase DAO asociada
- getQueries(). Devuelve un Properties con las consultas manejadas
- getQuery(String). Devuelve un String con la consulta cuya clave
en el fichero de properties se le pasa como parámetro.
- getStament(String, Connection). Devuelve una PreparedStatement de la consulta cuya
clave en el fichero de properties se le pasa como parámetro, haciendo uso de la conexión también pasada
como parámetro.
- executeQuery(String, Object[], Object[], Connection). Devuelve un ResultSet con el resultado
de ejecutar la consulta cuya clave en el fichero de properties se le pasa como parámetro. Utiliza como parámetros
los objetos que se le pasan en dos arrays: a) El primero de los arrays contiene parámetros estructurales. Se utilizan
para componer una consulta y se identifican por números entre "{" y "}" (por ejemplo: "SELECT * FROM {0};" ). Este
tipo de parámetros pueden considerarse como "comodines" para todas aquellas situaciones en las que no se puedan
utilizar los parámetros estándar de la clase java.sql.PreparedStatement. b) El segundo array de parámetros contendrá
los valores de los parámetros estándar (identificados por caracteres ?). El ResultSet y su Statement asociado deberán
ser cerrados después de utilizar este método. Si la Connection tampoco va a ser usada posteriormente, será necesario
cerrarla también.
- executeUpdate(String, Object[], Object[], Connection). Ejecuta la consulta de actualización
cuya clave se le pasa como parámetro. Si la Connection no va a ser usada posteriormente, será necesario cerrarla
tras el uso de este método.
- reload(). Refresca la tabla de consultas releyéndolas del fichero properties correspondiente