Spring 3 + JPA 2.0

2 respostas
lucas_carvalho100

Desculpem pelo tamanho do post, é quis tentar passar todos os detalhes do problema.

Pessoal estou com uma dificuldade para configurar o spring com o JPA. Configurei os xml’s e quando vou inserir um objeto ele da o erro “null”(java null point exception). Porém eu preencho o objeto, estou achando que o JPA não esta buscando as configurações no XML do spring, sem o spring o JPA funciona blz.

Vou postar os códigos.

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="XXXX" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>modelo.Bairro</class>
		<properties>
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.connection.password" value="root" />
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/XXXXX" />
			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
		</properties>			
	</persistence-unit>
</persistence>

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" xmlns:context="http://www.springframework.org/schema/context"

	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"

	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<bean
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

		<property name="XXXX" />

	</bean>

	<bean

		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

		<property name="persistenceUnitName" value="XXXX" />

	</bean>
	<bean class="org.springframework.orm.jpa.JpaTransactionManager">

		<property name="entityManagerFactory" ref="entityManagerFactory" />

	</bean>
	<context:component-scan base-package="br.com.XXXX" />

	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

		<property name="entityManagerFactory" ref="entityManagerFactory" />

	</bean>

	<mvc:annotation-driven />
	<tx:annotation-driven />
	<context:annotation-config />

</beans>

O DAO

package br.com.XXXX.dao;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import modelo.Bairro;

@Repository("bairroDao")
public class BairroDao {
	
	public BairroDao() {
		
	}
	
	@PersistenceContext
	protected EntityManager entityManager;
	
	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}

	public Bairro find(int idBairro) {
		return entityManager.find(Bairro.class, idBairro);
	}

	@SuppressWarnings("unchecked")
	public List<Bairro> findAll() {
		return entityManager.createNamedQuery("SELECT B FROM BAIRRO B").getResultList();
	}

	@Transactional
	public void persist(Bairro bairro) {
		try {
			entityManager.persist(bairro);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	
	}

	@Transactional
	public void merge(Bairro bairro) {		
		entityManager.merge(bairro);
	}

	@Transactional
	public void remove(Bairro bairro) {
		entityManager.remove(bairro);
	}

}

O modelo

package modelo;

import java.io.Serializable;
import javax.persistence.*;



/**
 * The persistent class for the tab_bairro database table.
 * 
 */
@Entity
@Table(name="tab_bairro")
public class Bairro implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="COD_BAIRRO", unique=true, nullable=false)
	private int codBairro;

	@Column(name="NOM_BAIRRO", nullable=false, length=60)
	private String nomBairro;	

    public Bairro() {
    }

	public int getCodBairro() {
		return this.codBairro;
	}

	public void setCodBairro(int codBairro) {
		this.codBairro = codBairro;
	}

	public String getNomBairro() {
		return this.nomBairro;
	}

	public void setNomBairro(String nomBairro) {
		this.nomBairro = nomBairro;
	}

	}

E a classe que estou fazendo os teste

import br.com.XXXXX.dao.BairroDao;
import modelo.Bairro;



public class Teste {

	/**
	 * Classe para testar o projeto
	 * @param args
	 */
	public static void main(String[] args) {
		
		Bairro bairro = new Bairro();
		bairro.setNomBairro("TESTE");
		BairroDao bairroDao = new BairroDao();
		bairroDao.persist(bairro);
		


	}

}

Por enquanto estou fazendo só testes com o console, depois vou usar o JSF 2 com primefaces.

Alguém pode me dizer o que estou fazendo de errado?

2 Respostas

lucas_carvalho100

Estou usando esse tutorial…

http://imasters.com.br/artigo/17935/java/spring_mvc_3_na_pratica_com_jpa_2/

bobboyms

Acho que pode te ajudar http://code.google.com/p/jpa-component/wiki/Doc_PT_Br

Criado 3 de fevereiro de 2011
Ultima resposta 8 de out. de 2011
Respostas 2
Participantes 2