É 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?
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
Richardson
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
net_sandro
Com BMP você implementa toda a consulta SQL :shock: , tipo:
publicvoidejbCreate(Longid,Stringvalor)throwsCreateException,RemoteException{...Contextctx=newInitialContext();javax.sql.DataSourceds=(javax.sql.DataSource)ctx.lookup("jdbc:/MyDataSource");Connectioncon=ds.getConnection();// agora você tem um objeto java.jdbc.ConnectionStatementst=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
net_sandro
:? , uma correção no código:
...PreparedStatementst=con.prepareStatement("insert into lixo (id, valor) ...