JPA puro necessita de um provider?

14 respostas
D

bom dia pessoal,
estou com duvida a respeito de JPA. Tenho que utilizar JPA puro EJB no meu projeto, porem andei pesquisando e pelo que entendi alem do JPA, me parece que tem que ter uma camada que comunica com JDBC, ou seja, Aplicacao>JPA>JDBC>BD, é isso mesmo, ou entendi errado?

14 Respostas

D

diegohsi:
bom dia pessoal,
estou com duvida a respeito de JPA. Tenho que utilizar JPA puro EJB no meu projeto, porem andei pesquisando e pelo que entendi alem do JPA, me parece que tem que ter uma camada que comunica com JDBC, ou seja, Aplicacao>JPA>JDBC>BD, é isso mesmo, ou entendi errado?

Entendeu errado.
JPA é JPA, JDBC é JDBC.
Provider é o conjunto de ferramentas de um determinado fabricante (EclipseLink, Hibernate) que implementam e permitem que você utilize JPA.
No EJB já existe um provider default, mas não impede que você substitua por Hibernate, por exemplo.

L

Não. A JPA fará a comunicação com o BD.
E uma coisa é JPA e outra é EJB.

E eu acredito que precisa de um provider sim, pois JPA é a especificação, a qual é implementada por diferentes providers como hibernate, eclipselink e outros.

D

lele_vader:
Não. A JPA fará a comunicação com o BD.
E uma coisa é JPA e outra é EJB.

E eu acredito que precisa de um provider sim, pois JPA é a especificação, a qual é implementada por diferentes providers como hibernate, eclipselink e outros.


Certo lele_vader,
foi realmente isso que eu entendi, JPA é uma especificação, no qual esses (hibernate, toplink, ibatis …) implementam. O que eu quiz dizer com os …>…> foi
Aplicação comunica com o provider que por sua vez comunica com jdbc … É realmente isso mesmo? Eu sempre vou precisar de um provider?
OBS: não posso usar hibernate, quero algo mais simples como toplink, esta certo o meu entendimento?

D

drsmachado:
diegohsi:
bom dia pessoal,
estou com duvida a respeito de JPA. Tenho que utilizar JPA puro EJB no meu projeto, porem andei pesquisando e pelo que entendi alem do JPA, me parece que tem que ter uma camada que comunica com JDBC, ou seja, Aplicacao>JPA>JDBC>BD, é isso mesmo, ou entendi errado?

Entendeu errado.
JPA é JPA, JDBC é JDBC.
Provider é o conjunto de ferramentas de um determinado fabricante (EclipseLink, Hibernate) que implementam e permitem que você utilize JPA.
No EJB já existe um provider default, mas não impede que você substitua por Hibernate, por exemplo.

drsmachado,
tenho que utilizar ejb no meu projeto tambem, como é esse provider padrão? como posso utiliza-lo? não entendi muito bem, vc poderia me informar como é essa arquitetura por exemplo, como o ejb comunica com o jpa e minha aplicação? sei que tenho meus pojos com as anotations do JPA…

D

Você precisa, antes de mais nada, estudar sobre persistência em EJBs.
Por exemplo, se você pretende usar EJB com JBoss, não tem por que se preocupar em usar ou não hibernate, pois, o JBoss, como proprietário do Hibernate, irá utiliza-lo por padrão. Existem alguns bons materiais por aí, incluindo o blog do jakefrog, o uaihebert.com, onde você encontra muita coisa bacana sobre JPA e EJB.

L

A jpa por baixo irá usar jdbc para se comunicar com o banco.

Se você usar um servidor de aplicação, dependendo da versão JEE que ele implementa ele já irá ter um provider de jpa, pois para um servidor de aplicação a partir da versão 5 se não me engano ser reconhecido ele tem que implementar todas as especificações da versão.
E na versão 5 por exemplo tem jpa.

Então o jboss implementa jpa e traz junto o hibernate como provider.

Agora uma coisa é jpa,a outra é ejb.
O seu ejb pode trabalhar junto com a jpa para realizar gerenciamento de transação, você também pode usar os ejb’s para serem utilizados por webservices.

Agora não é obrigado a se usar os 2 em conjunto.
Você poderia usar a jpa e controlar a transação por você mesmo e não usar ejb.

Entendeu ?

D

lele_vader:
A jpa por baixo irá usar jdbc para se comunicar com o banco.

Se você usar um servidor de aplicação, dependendo da versão JEE que ele implementa ele já irá ter um provider de jpa, pois para um servidor de aplicação a partir da versão 5 se não me engano ser reconhecido ele tem que implementar todas as especificações da versão.
E na versão 5 por exemplo tem jpa.

Então o jboss implementa jpa e traz junto o hibernate como provider.

Agora uma coisa é jpa,a outra é ejb.
O seu ejb pode trabalhar junto com a jpa para realizar gerenciamento de transação, você também pode usar os ejb’s para serem utilizados por webservices.

Agora não é obrigado a se usar os 2 em conjunto.
Você poderia usar a jpa e controlar a transação por você mesmo e não usar ejb.

Entendeu ?

Certo,
já que o java EE 5+ implementa já traz o JPA, e não utilizando o Hibernate (por favor não posso usar hibernate), como ficaria no meu persistence.xml na tag provider ?

<provider>javax.persistence.EntityManager</provider> ?

I

JPA é só especificação, sao apenas interfaces, o que vc pode fazer é usar as interfaces, mas por trás terá que ter algum provider pra fazer a persistencia.

Pelo que entendo, é a mesma coisa falar que vai usar JEE6, mas jee é só especificações, ai há frameworks que são baseado na especificacao JEE

D

igor_ks:
JPA é só especificação, sao apenas interfaces, o que vc pode fazer é usar as interfaces, mas por trás terá que ter algum provider pra fazer a persistencia.

Pelo que entendo, é a mesma coisa falar que vai usar JEE6, mas jee é só especificações, ai há frameworks que são baseado na especificacao JEE


Cara, por incrivel que pareça, vc sanou minhas dúvidas com essa frase “JPA é só especificação, sao apenas interfaces”. Muito obrigado.

T

Se vc quiser ver um monte de exemplo de como usar EJBs e JPA, dá uma olhada em http://openejb.apache.org/examples-trunk/
Mesmo que vc não use o OpenEJB, este projeto é uma boa fonte de exemplos.

D

Pessoal,
me desculpem a ignorância, mas ainda esse conceito esta obscuro pra mim.

Pesquisei em vários sites, tutoriais, inclusive esses que me informaram, mais não consigo integrar minha aplicação com JPA. Não estou entendendo o seguinte.
Estou utilizando sqlite, e lembrando, nao posso usar hibernate, pois estou ingressando num projeto agora com ejb+jboss+jpa( com hibernat) mais eles não querem que eu utilizo e ponto.

. Já que eu preciso de uma implementação do JPA no meu projeto, como devo proceder pra fazer essa configuração? Ja tem algum no eclipse que posso utilizar sem fazer configurações extras?
.... Li uns tutoriais sobre eclipselink, mais como integro uma implementação de JPA na minha aplicação, como configuro meu persistence.xml, li tb um tal de toplink.

. Os tutoriais que li sempre usam glass-fish, derby, mysql e sempre com hibernate. Ja to ficando doido, tentando achar a solução.

. Não estou pedindo a solução pra vcs, preciso que me orientem no caminho das pedras, Nesse projeto (apenas para entendimento das tecnologias) devo utilizar EJB + JBoss + JPA + Aplicação java SE desktop. Eu implementei tudo já, mais utilizando mvc+RMI para distribuir os objetos cliente/servidor. Dai o próximo passo é passar esta para a "EJB + JBoss + JPA + Aplicação java SE desktop". E ai está minha grande dúvida, Como integro uma implementação JPA no meu projeto, onde fica o persistence.xml (cliente/remoto).

.Outra duvida é a seguinte. Sei os conceitos de JPA, mas, estou com outra confusão, o JPA faz a persistencia atraves dos metodos da entidade gerenciadora e das anotations, Eu ainda preciso da minha fabrica de conexão? No meu caso com sqlite. Segue o código.
public class ConectarDB {
	private static Connection con;
	
	public static Connection getConnection() throws SQLException, ClassNotFoundException {
		Class.forName("org.sqlite.JDBC");
		if(con == null) {
			return DriverManager.getConnection( "jdbc:"+ MyProperties.URL_DATA_BASE );
		}
		return con;
	}
}

Desculpem se expressei mau.
Obrigado.

T

http://openejb.apache.org/examples-trunk/jpa-hibernate/README.html

D

Outra pergunta,
o JBoss ja implementa JPA?

L

Depende da versão do jboss.
Se for acima da versão que implementa java EE 5 ele irá implementar jpa.
Em jpa você não vai usar jdbc puro cara.

Porque não pode usar hibernate como provider ?
Você vai usar os mesmos métodos que usaria com qualquer outro provider se for pela jpa.

Você coloca as informações de usuário / senha / dialeto / driver e tal tudo no persistence.xml que deve ficar dentro da pasta META-INF.

Essa pasta tem que ser criada na raiz do projeto.

e com jpa você irá salvar uma entidade, como essa entidade já está mapeada ele sabe como encaixar cada campo com o seu respectivo no bd.

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 14
Participantes 5