JDAL Core Spring Namespace
Desde la versión 1.2.1, JDAL soporta custom namespaces de Spring para JDAL con la intención de simplificar la configuración del contexto de la aplicación. Aunque la configuración de JDAL Core es simple, no era este el caso de otros módulos como Swing y Vaadin, que implicaban la definición de un número considerable de beans.
El namespace http://www.jdal.org/schema/jdal para JDAL Core define únicamente un elemento, service que permite declarar un DAO y un servicio persistente de forma conjunta para una entidad.
En las versiones 1.1.x la declaración de un DAO y un servicio de persistencia para la entidad org.example.Entity se hacía de la siguiente forma:
<bean id="entityDao" class="info.joseluismartin.dao.jpa.JpaDao"> <constructor-arg value="org.example.Entity"/> <property name="criteriaBuilderMap"> <map key-type="java.lang.String" value-type="info.joseluismartin.dao.jpa.JpaCriteriaBuilder"> <entry key="entityFilter" value-ref="entityCriteriaBuilder"/> </map> </property> </bean> <bean id="entityCriteriaBuilder" class="org.example.dao.EntityCriteriaBuilder"/> <bean id="entityService" class="info.joseluismartin.logic.PersistentManager"> <property name="dao" ref="entityDao"/> </bean>
Utilizando el nuevo namespace de jdal, a partir de la versión 1.2.1 puede hacerse como sigue:
<jdal:service entity="org.example.Entity"> <jdal:criteria name="entityFilter" builder="entityCriteriaBuilder" /> </jdal:service> <bean id="entityCriteriaBuilder" class="org.example.dao.EntityCriteriaBuilder"/>
El elemento service permite especificar los siguientes atributos:
- entity: Obligatorio, define la clase de la entidad que maneja este servicio. Si se trata de un servicio de uso general, use java.lang.Object.
- daoClass: Opcional, por defecto info.joseluismartin.dao.jpa.JpaDao
- serviceClass: Opcional, por defecto info.joseluismartin.logic.PersistentManager
El elemento service permite especificar una secuencia indeterminada de elementos criteria que representan los CriteriaBuilders con los que se inicializa el mapa de constructores de Criterias del Dao.
El elemento criteria permite especificar los siguientes atributos:
- name: Obligatorio, representa al que se asociará el constructor en el mapa.
- builder: Obligatorio, debe ser una referencia a un bean definido en el contexto de la aplicación, ie, el constructor de criterias.
Para utilizar el namespace, es necesario declararlo en el elemento <beans> del contexto de la aplicación, definiendo un prefijo para el namespace y la localización del schema de forma similar al resto de namespaces de Spring.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdal="http://www.jdal.org/schema/jdal" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.jdal.org/schema/jdal http://www.jdal.org/schema/jdal/jdal-core.xsd" default-init-method="init"> </beans>