Usando Stored Procedures com EJB3

5 respostas
C

Bons Dias a todos!

Estou buscando informações sobre o uso de Stored Procedures com EJB3, já sabemos pela documentação do Hibernate puro(vamos chama-lo assim sem o suporte para EJB3) e podemos ver nos topicos em outros forums que o Hibernate Puro suporta o uso de Stored Procedures inclusive com algumas limitações, mas nada que inviabilize seu uso.

Tenho estudado nos últimos dias o Novo EJB3, após praticamente ler totalmente, os seguintes textos:
[list] Hibernate EntityManager * [/list]
[list] JSR 220 - EJB 3.0 Simplified API[/list]
[list] Hibernate Annotations[/list]
[list] JSR 220 - Java Persistence API *[/list]
Sendo os que estão marcados com Asterisco, os que estão em leitura, portanto pode ser que até que encontre algo, o que estou começando a duvidar, já que em Annotations este topico não foi abordado.

[list]Existe alguma referencia a este fato (Stored Procedure com EJB3)?[/list]
[list]Caso esta versão a 3.0 não suporte existe algum comentário sobre versões futuras?[/list]

Obrigado

5 Respostas

Daniel_Quirino_Olive

Oi Carlos,

Estive pesquisando a respeito do mesmo tema nos últimos dias, mas não achei nada muito conclusivo também. O que eu sugeriria a você seria criar algo semelhante a um [POSA1] Broker especializado em trabalhar com um conjunto de SPs (talvez algo na linha dos Web Service Broker: http://www.corej2eepatterns.com/Patterns2ndEd/WebServiceBroker.htm). Mas, se você encontrar alguma informação a respeito, avise-nos :smiley:

[]s

Daniel_Quirino_Olive

P.S.: http://forums.oracle.com/forums/message.jspa?messageID=1255706

C

O link acima apresenta uma solução ainda muito complexa, e talvez até bem suja, acho que é melhor esperarmos por um proximo release!

Você tem conhecimento de outros foruns que testão focados no EJB3? Principalmente que mostre tendencias?

C

Daniel Quirino Oliveira:
Oi Carlos,

Estive pesquisando a respeito do mesmo tema nos últimos dias, mas não achei nada muito conclusivo também. O que eu sugeriria a você seria criar algo semelhante a um [POSA1] Broker especializado em trabalhar com um conjunto de SPs (talvez algo na linha dos Web Service Broker: http://www.corej2eepatterns.com/Patterns2ndEd/WebServiceBroker.htm). Mas, se você encontrar alguma informação a respeito, avise-nos :smiley:

[]s

Acho que o ideal é procurar mais, de qualquer forma acredito que nos proximos releases tratem isto de uma forma melhor!

C

Conforme resposta que encontrei no Tópico a seguir do forum Java Technology da Sum

http://forum.java.sun.com/thread.jspa?threadID=539889&messageID=2615687

Não é possivel trabalhar com Stored Procedures usando o EJBQL diretamente, já que esta linguagem de consulta é uma linguagem abstrata que é mapeada para o banco de dados usando os objetos identificados.

Mas podemos resgatar o ResultSet de uma Stored Procedure executada pelo SQL Nativo, usando o metodo createNativeQuery(String,String) do EntityManager , claro que isto irá tornar sua aplicação amarada ao Banco, mas nada mais amarrada do que já está devido ao uso do SP.

O capitulo 8 do guia de referencia do Hibernate Entitymanager apesar de bem pequeno dá uma pequena projeção do que podemos fazer, bastando substituir o select pela chamada a stored procedure desejada com os parametros organizados da forma exigida pelo banco. Tal Stored Procedure deverá retornar um ResultSet, que será mapeado para um ResultSetMapping, portanto o metodo “createNativeQuery” receberá o query desejado, no caso a chamada a Stored procedure, e o nome do ResultSetMapping que deverá já ter sido anotado na entidade que irá receber o resultado.

Criado 26 de maio de 2006
Ultima resposta 29 de mai. de 2006
Respostas 5
Participantes 2