Spring 3.0 e Hibernate JPA 2.0

Hace unos días me decici a integrar Spring con la implementacion JPA 2.0 de Hibernate. En esta ocasión la versión de spring que usare es la 3.0 de Hibernate 3.6.7 y la base de datos de ejemplo (derby - sample) que se encuentra embebida en Netbeans.

Los jars necesarios para utilizar la implementación JPA de Hibernate, en donde {hibernate-path} es la ruta donde esta descomprimido la distribución final de Hibernate 3.6.7:

{hibernate-path}\lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final.jar
{hibernate-path}\lib\required\antlr-2.7.6.jar
{hibernate-path}\lib\required\commons-collections-3.1.jar
{hibernate-path}\lib\required\dom4j-1.6.1.jar
{hibernate-path}\lib\required\javassist-3.12.0.GA.jar
{hibernate-path}\lib\required\jta-1.1.jar
{hibernate-path}\lib\required\slf4j-api-1.6.1.jar
{hibernate-path}\hibernate3.jar

Como nota aclaratoria es tambien necesario agregar el jar aopalliance.jar para poder utilizar la anotación @Transactional, en este ejemplo no realizaremos un CRUD por esa razón no se incluye.


Y la versión 3.0 de Spring que viene con Netbeans.

Las tablas que utilizare son "Product", "Manufacturer" y "Product_Code", al mapear las tablas con el asistente de Netbeans obtengo sus clases

La unidad de persistencia debera quedar de la siguiente forma:




  
    org.hibernate.ejb.HibernatePersistence
    org.dani.ejemplo.jpa.dao.ProductCode
    org.dani.ejemplo.jpa.dao.Product
    org.dani.ejemplo.jpa.dao.Manufacturer
    
  


Creo el acceso a datos para las tablas.

package org.dani.ejemplo.jpa.dao;
import org.springframework.orm.jpa.support.JpaDaoSupport;
import java.util.*;
/**
 *
 * @author dherrera
 */
public class DerbySampleDAO extends JpaDaoSupport{

    public List getAllProducts() {
        return getJpaTemplate().find("Select p From Product p");
    }
}


Luego procedo a configurar el archivo de configuración de spring



    


    
     
    
        
            
            
        
    
    
        
    


    
    
    
    


    
    

    




Y la forma de uso sera de la siguiente forma:

package org.dani.ejemplo.jpa;

import java.util.List;
import org.dani.ejemplo.jpa.dao.DerbySampleDAO;
import org.dani.ejemplo.jpa.dao.Product;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 *
 * @author dherrera
 */
public class Init {

    public static void main(String[] args) {
        ApplicationContext ctx=new ClassPathXmlApplicationContext("/org/dani/ejemplo/jpa/applicationContext.xml");
        DerbySampleDAO dao=(DerbySampleDAO) ctx.getBean("dao");
        List list=dao.getAllProducts();
        for(Product product:list)
            System.out.println(product.getDescription());
    }
}

Adjunto el código fuente de ejemplo aca.

Comentarios (0)

0 Response to "Spring 3.0 e Hibernate JPA 2.0"