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:
Paquete mx.edu.tesoem.DAOImppublic interface SocioDaoInt { public void saveSocio (SocioDTO socio); public void deleteSocio (SocioDTO socio); public SocioDTO findSocio(SocioDTO socio); public List listAllSocio(); }
SocioDAO
Código:
Paquete mx.edu.tesoem.CONTROLLERSpackage 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 { } } } }
SocioGuardarController
Código:
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.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); } } }
Mis archivos de configuracion son:
applicationContext.xml
Código:
El archivo dispatcher-servlet.xml<?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 -->
Código:
El mapping de POJO y la tabla de la base de datos:<?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>
Código:
EL error aparece en la lina que esta de color rojo <?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>