Oi Leandro,
Voce tem varias opcoes para realizar a persistencia de sua aplicacao.
Como voce esta usando um banco de dados relacional, voce deve ser preocupar com o mapeamento objeto-relacional.
Este mapeamento objeto-relacional pode ser realizado atraves de varias formas:
- programaca JDBC, SQLJ
- uso de uma camada de persistencia como o TopLink, Castor, Hybernate, etc.
- uso de EJBs (BMP, CMP)
- uso de DAO (Data Access Objects - Design Pattern ) geralmente um Session Bean implemantando o mecanismo de persistencia com JDBC.
Cada um desses mecanismos de persistencia tem seus prós e contras.
Caso voce queira realizar a persistencia atraves de EJBs, voce podera utilizar BMP onde dentro desse EJB voce devera “codar” seus metodos de armazenamento e recuperacao de dados, nesse caso, voce devera codar em JDBC por exemplo.
Caso voce opte por CMP, voce deixara que o container realize o armazenamento e a recuperacao dos dados, nesse voce somente tera que definir os atributos que deverao ser persistidos.
O CMP apesar de ser muito atraente ainda nao possui todas as caracteristicas que eu gostaria que tivesse. Por exemplo: A especificacao J2EE ainda nao permite uso de Outer Joins, consultas dinamicas, e algumas outras coisinhas, que dependendo do banco de dados que voce possuir se faz necessario o uso. Alguns containers implementam uso de forma proprietaria, e acredito que nao vale a pena usa-las. perde-se a portabilidade. Alem disso existe o problema das Consultas N+1.
Apesar do BMP lhe dar mais trabalho, este podera lhe dar maior flexibilidade tambem se comparado ao CMP por exemplo. Em relacao a performance de BMP e CMP isso ainda pode ser relativo. Ja vi varios testes de Benchmark onde BMPs era mais rapidos que CMPs, pois os codigos SQL escritos dentro dos BMPs eram mais elaborados e performaticos. O lado bom do uso de EJBs sao os servicos oferecidos e padronizados pelo container, como toda a parte de infraestrutura: Seguranca, controle de transacoes, escalabilidade, distribuicao, etc…
Tambem sei que muitos clientes nao usam EJBs e preferem usar um framework de persistencia, como o TopLink, Castor,etc. Estes ja sao mais maduros que os EJBs e oferecem mais servicos agregados tambem. No caso do TopLink, este existe desde a epoca de SmallTalk, ou seja, o produto ja faz persistencia de dados a muito tempo.
Um abraço