Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2011, 17:44
Avatar de optimus100
optimus100
 
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 0
Problemas con la Configuracion de Spring e Hibernate

Hola a todos, pues bien creo este nuevo tema porque tengo dudas en cómo configurar una aplicación web con spring e hibernate. Pues bien este es un pequeño ejemplo:
Mi aplicacion como lo mencione anteriormente lo realizo con spring por lo que,
dentro de paquete tiene una clase, por ejemplo en el paquete mx.edu.tesoem.DTO tengo una clase POJO:
SocioDTO
Código:
public class SocioDTO implements Serializable {
    private String nombreSocio;
    private String appSocio;
    private String apmSocio;

   gettser y setter de cada variable
}

SocioDAOInt
Código:
public interface  SocioDaoInt {

    public void saveSocio (SocioDTO socio);
    public void deleteSocio (SocioDTO socio);
    public SocioDTO findSocio(SocioDTO socio);
    public List listAllSocio();
}
Paquete mx.edu.tesoem.DAOImp
SocioDAO
Código:
package mx.edu.tesoem.DAOImp;
public class SocioDAO implements SocioDaoInt{
    HibernateTemplate hibernateTemplate;
    public void saveSocio(SocioDTO socio) {               
        if(socio != null)
        {
            String query = "FROM socio";
            List listaSocios = hibernateTemplate.find(query);
            
            if(listaSocios.isEmpty())
            {               
            }else
            {      
            }
        }
    }
}
Paquete mx.edu.tesoem.CONTROLLERS
SocioGuardarController
Código:
public class SocioGuardarController implements Controller{

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
                                      throws ServletException, IOException {
        String cliente = "";
        try{
        logger.info("Guardando nuevo socio.");
        SocioDTO socio = new SocioDTO();
        socio.setNombreSocio(request.getParameter("nombre"));
        socio.setAppSocio(request.getParameter("app"));
        socio.setApmSocio(request.getParameter("apm"));
        socio.setIdEntFed(3);
        SocioBusiness registro = new SocioBusiness();
        registro.altaSocio(socio);
        cliente = "El cliente " + socio.getNombreSocio() + " " + socio.getAppSocio() + " " + socio.getApmSocio() + " ha sido registrado";
        return new ModelAndView("Bien","hola", cliente);
        }catch(Exception ex){            
            return new ModelAndView("Mal","hola",ex);
        }   
    }    
}
Estos son las clases y paquetes que estoy utilizando. El error que se me muestra al dar click en el boton de enviar de mi aplicacion es NULLPOINTEREXCEPTION. Este error aparece al tratar de ejecutar la sentencia que esta marcado en color rojo.

Mis archivos de configuracion son:
applicationContext.xml
Código:
<?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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="socioDAO" class="mx.edu.tesoem.DAOImp.SocioDAO">
         <property name="sessionFactory">
             <ref local="tesSessionFactory"/>
         </property>
     </bean>
<!-- PERSISTENCIA -->
    <!-- Configuracion de Hibernate -->
   <!--========== Spring Data Source ==========-->
    <bean id="tesDataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/aerogym"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <!--========== Spring Data Source ==========-->
    <!--========== TransactionManager ==========-->
    <!-- Este bean se encarga del manejo de transacciones.  -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" >
            <ref local="tesSessionFactory" />
        </property>
    </bean>
    <!--========== TransactionManager ==========-->
    <!--========== Hibernate SessionFactory ==========-->
    <!-- Este objeto de Hibernate maneja las sesiones que ejecutan las distintas transacciones a la base de datos.  -->
    <bean id="tesSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" >
            <ref local="tesDataSource" />
        </property>        
        <property name="mappingResources">
            <list>
                <value>../Socio.hbm.xml</value>                
            </list>
        </property>
        <property name="hibernateProperties" >
            <props>
                <!-- Esta propiedad establece el lenguaje de la base de datos, en este caso MySQL -->
               <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
               <prop key="current_session_context_class">thread</prop>
                 <prop key="hibernate.query.substitutions">true 'T', false 'F'</prop>
	                <!-- Sirve para desactivar el debug de las consultas en la consola. -->
	                <prop key="hibernate.show_sql">false</prop>
	                <!-- Especificamos el valor minimo del pool de conexiones -->
	                <prop key="hibernate.c3p0.minPoolSize">5</prop>
	                <!-- Especificamos el valor maximo del pool de conexiones -->
	                <prop key="hibernate.c3p0.maxPoolSize">20</prop>
	                <!-- El tiempo de vida de cada conexion del pool. -->
	                <prop key="hibernate.c3p0.timeout">600</prop>
	                <!-- Especificamos el valor maximo de transferencias -->
	                <prop key="hibernate.c3p0.max_statement">50</prop>
	                <!-- Espeficica que no chequee el estado de la conexion antes de cada consulta -->
	                <prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>                           
            </props>
        </property>

    </bean>
    <!--========== Hibernate SessionFactory ==========-->
    <!--========== Hibernate Template ==========-->
    <!-- Este objeto es la clave de nuestros DAOs (Data Access Objects).
    Este objeto se encarga de guardar, borrar, listar y obtener los objetos de la base de datos.
    También se encarga de la excepciones ahorrandonos así mucho trabajo.  -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref local="tesSessionFactory"/>
        </property>
    </bean>
    <!--========== Hibernate Template ==========-->

     <!-- FIN de configuracion de Hibernate -->
El archivo dispatcher-servlet.xml
Código:
<?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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
     <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
                <prop key="altaSocio.htm">socioGuardarController</prop>
            </props>
        </property>
    </bean>    
    <bean id="viewResolver"
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WebApp/"
          p:suffix=".jsp" />    
    <!--
    The index controller.
    -->
    <bean name="indexController"          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
     <bean id="socioGuardarController" class="mx.edu.tesoem.CONTROLLERS.SocioGuardarController" />            
</beans>
El mapping de POJO y la tabla de la base de datos:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="mx.edu.tesoem.DTO.SocioDTO" table="socio">
    <id column="FolioSocio" name="folioSocio" type="int"/>
    <property column="NombreSocio" name="nombreSocio" type="string"/>
    <property column="AppSocio" name="appSocio" type="string"/>
    <property column="ApmSocio" name="apmSocio" type="string"/>    
  </class>
</hibernate-mapping>
EL error aparece en la lina que esta de color rojo