EJB's e JDBC

5 respostas
Rafael_Afonso

Olá:

É possível acessar um Banco de Dados diretamente? Sem a intermediação do Conteiner e do EJB-QL (eca!)?
Sei que um dos atrativos dos EJB’s é justamente o código não se “preocupar” com o Banco de Dados, usando no lugar os findByQualqueCoisa e os Selects com o EJB-QL escrito em um arquivo XML à parte. Entretanto o EJB-QL é muito limitado. Sei que vai ser incrementado na próxima versão. Mas até lá tenho que me virar de outra forma.
Por exemplo: tenho o meu SessionBean (ou EntityBean). Tenho que usar um Objeto java.sql.Connection para entrar em contato com o BD. Fora do universo dos EJB’s eu faria java.sql.DriverManeger.getConnection(), depois de passar a classe do driver JDBC. E num EJB como faria?

Grato,

5 Respostas

kantek

Eu também acho EJB-QL uma bomba (para não dizer coisa pior)
comecei a escrever um compilador OQL -> SQL por que SQL no EJB nem a pau! O meu compilador não está pronto e estou sem tempo para terminar.
Eu estou escrevendo ele com o JavaCC.

Alguém se habilitaria a me ajudar ? 8)

R

Pessoal, existem dois tipos de persistência em EntityBean, CMP (Persistencia Controlada pelo Container) e BMP(Persistencia Controlada pelo Bean), usando o BMP vc é quem decide como fazer a persistência e pode ser com JDBC, JDO …

N

Com BMP você implementa toda a consulta SQL :shock: , tipo:

public void ejbCreate(Long id, String valor) throws CreateException, RemoteException {
...
Context ctx = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("jdbc:/MyDataSource");
Connection con = ds.getConnection();   // agora você tem um objeto java.jdbc.Connection
Statement st = con.prepareStatement("insert into lixo (id, valor) values (?, ?)");
st.setLong(1, id.longValue());
st.setString(2, valor);
st.execute(); // ou executeUpdate ? não lembro.
...
}
N

:? , uma correção no código:

...
PreparedStatement st = con.prepareStatement("insert into lixo (id, valor) 
...
ozielneto

Existem quatro especificações atualmente de EJBs.

[color=“red”]EJB 1.0 - EntityBeans BMP [/color][color=“blue”]Bean Managed Persistence[/color]
[color=“red”]EJB 1.1 - SessionBeans, EntityBeans BMP e CMP 1.0 [/color][color=“blue”]Container Managed Persistence (Proprietary) [/color]
[color=“red”]EJB 2.0 - SessionBeans, MessageDrivenBeans, EntityBeans BMP e CMP 2.0 [/color][color=“blue”]Container Managed Persistence (Standard) [/color]
[color=“red”]EJB 2.1 - WebServices for Access EJBs[/color]

Os EntityBeans BMP, são os mais performáticos, entretanto a sua construção é extremamente complexa.

A sua melhoria de performance ainda depende de técnicas de implementações com LazyCreation e LazyLoading.

[]´s

Criado 26 de fevereiro de 2003
Ultima resposta 24 de mar. de 2003
Respostas 5
Participantes 5