Mapeamento OR com EJB3

13 respostas
crpablo

Fala galera!!!

Estou pesquisando para fazer o mapeamento OR de minha aplicação utilizando EJB3.
Minhas dúvidas são. O que eu vou precisar para fazer isso, além da api do ejb3 é claro.
Minha aplicação é desktop, nada web. Estou utlizando o BD apache derby.

Vou precisar utilizar algum server como o JBoss, ou mais alguma coisa?..
Estou desenvolvendo com o Eclipse Europa.

Agradeço…

Abraço!!!

13 Respostas

nbluis

Tu não precisa nem de EJBs.
Precisa apenas de Java 5 com JPA.

crpablo

nbluis:
Tu não precisa nem de EJBs.
Precisa apenas de Java 5 com JPA.

Fala Luis

Pretendo utilizar EJB3 por alguns motivos além do mapeamento de meu BD.

Você sabe me dizer se somente com a api do EJB3 eu consigo fazer esse mapeamento?.

Outra coisa, utilizando somente JPA fica mais parecido com o mapeamento do hibernate certo?.. falo da sintaxe, tipo update(hibernate) ou invés de persist(EJB3).

Obrigado
Abraço

rodrigoallemand

Vc vai precisar:

  • Java >= 5
  • Implementação de um JPA (Hibernate EntityManager e Toplinks são os mais usados)
  • Um servidor de aplicação qualquer, não precisando de suporte para EJBs
dc.rec1

Nesses dias vou fazer um tutorial mas ate então você poder ganhar algumas dicas desse site em francês :stuck_out_tongue:

http://www.eclipsetotale.com/articles/Introduction_EJB3_avec_Eclipse.html

nbluis

O ORM é o JPA, seja trabalhando com EJB’s ou não.

Pode trabalhar apenas com Hibernate se quiser, dai fica com a sintaxe que vc está acostumado.

Mas ultimamente tenho visto pouco disso, normalmente é jpa mesmo, e com hibernate ou toplink como entity manager como o rodrigoallemand citou.

danieldestro

rodrigoallemand:
Vc vai precisar:

  • Java >= 5
  • Implementação de um JPA (Hibernate EntityManager e Toplinks são os mais usados)
  • Um servidor de aplicação qualquer, não precisando de suporte para EJBs

Nem precisa de um app server.
Eu estou usando o Hibernate + Hibernate Entity Manager e rodo isso de modo stand-alone.

crpablo

Pow…

Valeu pelos tokes ae rapaziada!!!.. Galerinha gente fina mesmo…

Já to até aprendendo francês =D

Agora preciso de um “consellho”… Sei que cada um tem preferências… Mas o que seria mais descomplicado somente para o mapeamento…

JPA?.. Hibernate?.. EJB?..

Falo em geral… Tipo, menos apis, menos plugins, etc…

Lembrando… estou utilizando o Eclipse Europa e o BD Apache Derby…

Abraço!!!

nbluis

ORM do EJB só se forem os Entity Beans do EJB 2.x, que nem de longe devem ser cogitados.

Tanto JPA, quanto Hibernate vai precisar do mesmo de API’s, JPA é um contrato, a implementação do ORM é feita pelo hibernate, toplink ou outros por ai.

rodrigoallemand

danieldestro:
Nem precisa de um app server.
Eu estou usando o Hibernate + Hibernate Entity Manager e rodo isso de modo stand-alone.

Desculpe, entendi errado… ele disse…

É o cotidiano de JEE que me faz pensar assim…

crpablo

Fiz uns testes com JPA para meu mapeamento… Funciona legal, porém achei meio trabalhoso ficar criando e controlado tudo isso abaixo.

EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(Object);
em.getTransaction().commit();
em.close();
emf.close();

Pelo que eu ví no EJB3 eu posso somente fazer isso:

@PersistenseContext (unitName="MyUnit")
private EntityManager manager;

manager.persist(Object);

E assim o conteiner cuida de toda lógica da persistência sem eu ter que me preocupar com transactions, commits etc…

Alguém pode me dar uma luz?

Abraço!!!

nbluis

Sim, isso sim… um container javaee injeta o entity manager e gerencia a transação pra vc;

mas não acho que valha a pena utilizar um container javaee só por causa disso…

jgbt

alguem precisa controlar isso, seja no codigou ou algum outro lugar.
vc pode usar Spring para controlar transações, sem precisar de um AppServer p/ isso.

[]´s

crpablo

Falae galerinha...

Eu de novo...

Estou fazendo uns testes com o EJB3.

E tenho essas 3 classes:

O Entity:
import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@NamedQuery(name="Cliente.getAll", query="from Clientes")
@Table(name="CLIENTES")
public class Cliente implements Serializable{
	
	private String nome;
	private String sobrenome;
	private int idade;
	
	public Cliente() {
	
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getSobrenome() {
		return sobrenome;
	}
	
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	
	public int getIdade() {
		return idade;
	}
	
	public void setIdade(int idade) {
		this.idade = idade;
	}
}
A interface:
import java.util.List;

import javax.ejb.Local;

@Local
public interface ClienteDAO {

	List getAll(String entity, int	firstResult, int maxResults);
	
	List getAll(String entity);
	
	List<Cliente>getAllClientes();
	
	List<Cliente>getAllClientes(int firstResult, int maxResults);
	
	void persist(Object object);
	
	void remove(Object object);
	
	<T> T merge(Object object);
	
}
E a implementação da interface:
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class ClienteDAOBean implements ClienteDAO{
	
	@PersistenceContext(unitName="persistenceUnit")
	private EntityManager manager;
	
	public List<Cliente> getAllClientes() {
		return getAllClientes(0, 0);
	}

	public List<Cliente> getAllClientes(int firstResult, int maxResults) {
		Query query = manager.createNamedQuery("Cliente.getAll");
		
		if(maxResults>0)
			query.setFirstResult(firstResult);
		
		return query.getResultList();
	}

	public List getAll(String entity) {
		return getAll(entity, 0, 0);
	}
	
	public List getAll(String entity, int firstResult, int maxResults) {
		Query query = manager.createQuery("from " +entity);
		
		if(firstResult>0)
			query.setFirstResult(firstResult);
		
		if(maxResults>0)
			query.setMaxResults(maxResults);
		
		return query.getResultList();
	}

	public void persist(Object object) {
		manager.persist(object);
	}

	public void remove(Object object) {
		manager.remove(object);
	}

	public <T> T merge(Object object) {
		return (T) manager.merge(object);
	}
}

Alguém pode me ajudar com a implementação do cliente dessas classes para fazer a persistência no BD?

Abraço... valeu a ajuda que já deram até agora!!!!

Criado 12 de dezembro de 2007
Ultima resposta 13 de dez. de 2007
Respostas 13
Participantes 6