Mapeamento OR com EJB3

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!!!

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

[quote=nbluis]Tu não precisa nem de EJBs.
Precisa apenas de Java 5 com JPA.[/quote]

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

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

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

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.

[quote=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[/quote]

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

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!!!

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.

[quote=danieldestro]Nem precisa de um app server.
Eu estou usando o Hibernate + Hibernate Entity Manager e rodo isso de modo stand-alone.[/quote]

Desculpe, entendi errado… ele disse…

É o cotidiano de JEE que me faz pensar assim…

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!!!

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…

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

Falae galerinha…

Eu de novo…

Estou fazendo uns testes com o EJB3.

E tenho essas 3 classes:

O Entity:

[code]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;
}

}[/code]

A interface:

[code]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);

}[/code]

E a implementação da interface:

[code]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);
}

}[/code]

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!!!