Boa noite.
Bom estou passando por um problema o qual não consegui resolver de jeito nenhum. A situação é a seguinte.
Estou querendo utilizar o Spring e o JPA para acessar ao banco de dados MySQL. Utilizando inversão de controle.
Para isso criei o seguinte applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean
id="testeDao"
class="tcs.dao.TesteDaoImpl">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</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.TopLinkJpaVendorAdapter">
<property name="showSql" value="true"/>
<property name="generateDdl" value="true"/>
<property name="databasePlatform" value="oracle.toplink.essentials.platform.database.HSQLPlatform"/>
</bean>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver"/>
</property>
</bean>
<bean
id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/xxx"/>
<property name="username" value="xxx" />
<property name="password" value="xxx" />
</bean>
<bean
id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
Para chamar esse applicationContext, coloquei um listener no web.xml, dessa maneira:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
Finalmente tenho uma classe .java que é a mesma referenciada no xml do applicationContext. que é a seguinte:
package tcs.dao;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.orm.jpa.support.JpaDaoSupport;
import tcs.model.Teste;
/**
*
* @author Thiago
*/
public class TesteDaoImpl extends JpaDaoSupport implements TesteDao {
@PersistenceContext(unitName="TestePU")
EntityManager em;
public TesteDaoImpl() {
}
public Teste getTeste() {
Teste teste= new Teste();
teste.setEmaTeste("xxx@gmail.com");
teste.setNomTeste("XXX");
teste.setId(1);
em.persist(teste);
return teste;
}
}
Bom eis o problema: Na hora que entra nessa classe java, a variável “em” esta null, entao na hora do em.persit ocorre o famoso NullPointerException.
Sou meio leigo nesse assunto de inversao de controle, spring…
o que estaria faltando fazer? nao estou encontrando a solução
Antes de mais nada Obrigado,
Thiago
