Gostaria de saber se alguem pode me dar uma luz no que diz respeito ao meu problema. Estou desenvolvendo uma aplicação de teste que deve, simplemente agendar visitas. Para isso, deve-se persistir no BD um objeto usuario e um objeto visita. Estou usando hibernate para persistencia e spring para injeção de dependencia. No entanto nao estou conseguindo gravar nada no banco de dados, nem ler. Segue abaixo trechos do codigo da app para análise:
o persistence.xml está corretamente configurado com os dados do BD, consegui gerar as classes “usuario” e “visita” a partir das tabelas do banco… Criei a classe usuarioDao e, no entanto, ao tentar utilizar algum método dessa classe a partir da classe usuarioFacade, obtenho o seguinte erro:
Exception in thread “main” java.lang.NullPointerException
at facade.UsuarioFacade.gravar(UsuarioFacade.java:24)
at mainTest.Teste.main(Teste.java:43)
Java Result: 1
Alguem tem uma ideia de como fazer isso funcionar?
Valeu!
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : applicationContext.xml
Created on : 14 de Maio de 2009, 13:18
Author : Barretto
Description:
Purpose of the document follows.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:/jdbc.properties"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooleDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="user" value="${jdbc.username}"/>
<property name="jdbcUrl" vavalue="${jdbc.url}"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" >
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotatioBeanPostProcessor"/>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="usuario" class="domain.Usuario" scope="session"/>
<bean id="usuarioDao" class="dao.UsuarioDao" />
<bean id="usuarioFacade" class="dao.UsuarioFacade">
<property name="usuarioDao" ref="usuarioDao"/>
</bean>
<bean id="visita" class="domain.Visita" scope="session"/>
<bean id="visitaDao" class="dao.visitaDao" />
<bean id="visitaFacade" class="dao.visitaFacade">
<property name="visitaDao" ref="visitaDao"/>
</bean>
</beans>
usuarioDao
[code]
public class UsuarioDao {
@PersistenceContext
private EntityManager em;
public UsuarioDao() {
}
public Usuario gravar(Usuario user) {
return em.merge(user);
}
public void excluir(Usuario user) {
em.remove(user);
}
public Usuario carregar(Integer id) {
return em.find(Usuario.class, id);
}
public List obterTodos() {
return em.createQuery("SELECT u FROM Usuario u").getResultList();
}
[/code]
usuarioFacade
[code]
public class UsuarioFacade {
private UsuarioDao usuarioDao;
public UsuarioFacade() {
}
public void gravar(Usuario usuario) {
usuarioDao.gravar(usuario);
}
public void excluir(Usuario usuario) {
usuarioDao.excluir(usuario);
}
public Usuario carregar(Integer id) {
return usuarioDao.carregar(id);
}[/code]