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:

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:

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>