Pergunta

Agora estou fazendo um website- extremamente simples sobre 5 páginas. A pergunta é se é um exagero e vale a pena o tempo para integrar algum tipo de solução de mapeamento de banco de dados ou se seria melhor usar apenas plain JNDI de idade. Vou ter talvez uma dúzia de coisas que eu preciso de leitura / gravação do banco de dados. Eu acho que tenho um entendimento básico dessas tecnologias, mas ainda levaria um monte de se referir à documentação. Qualquer outra pessoa confrontado com a decisão antes?

EDIT:. Desculpe, eu deveria ter especificado JNDI para procurar a conexão DB e JDBC para executar as operações

Foi útil?

Solução

Resposta curta:. Depende da complexidade que você quer suporte

Resposta longa:

Em primeiro lugar, ORM (objeto relacional mapeamento - mapeamento de banco de dados como você chamá-lo -) e JNDI (Java Naming and Diretório Interfaces) são duas coisas diferentes.

O primeiro, como você já sabe, é usado para mapear as tabelas de banco de dados para classes e objetos. O segundo é proporcionar um mecanismo de pesquisa de recursos, eles podem ser DataSources, Ejb, filas ou outros.

Talvez a sua média "JDBC".

Agora, como para a sua pergunta: Se é tão simples pode ser que não seria necessário para implementar um ORM. As tabelas de números seria em torno de 5 - 10 no máximo, e as operações muito simples, eu acho.

Provavelmente usando plain JDBC seria suficiente.

Se você usar o padrão DAO você pode alterá-lo posteriormente para apoiar a estratégia ORM, se necessário.

Assim: Digamos que você tenha a tabela de funcionários

Você cria o Employee.java com todos os campos do DB à mão (não deve demorar muito) e um EmployeeDaO.java com métodos como:

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List<Employee>

E a implementação é bastante simples:

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

Quando (e se) a sua aplicação se torna muito complexo que você pode alterar a implementação DAO. Por exemplo, no "selecione" método de alterar o código para usar o objeto ORM que executa a operação.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

Este é apenas um exemplo, na vida real, você pode deixar a fábrica abstact criar o DAO ORM, mas isso é offtopic. O ponto é que você pode começar de forma simples e usando os padrões desing você pode alterar a implementação posteriormente, se necessário.

É claro que se você quiser aprender a tecnologia que você pode começar rigth longe, mesmo com 1 mesa.

A escolha de um ou outro (solução ORM que é) dependem basicamente a tecnologia que você está usando. Por exemplo, para JBoss ou outros produtos opensource Hibernate é grande. É opensource, há uma grande quantidade de recursos, onde para aprender. Mas se você está usando algo que já tem Toplink (como o Oracle Application Server) ou se a base já está construído sobre Toplink você deve permanecer com esse quadro.

A propósito, uma vez que a Oracle comprou a BEA, eles disseram que está substituindo Kodo (quadro peresistence weblogic) com toplink no agora chamado de "Oracle WebLogic Application Server".

Deixo-vos alguns recursos onde você pode obter mais informações sobre isso:


Neste "Patterns of Enterprise Application Architecture" livro, Martin Fowler, explica onde usar uma ou outra, aqui é o catálogo. Dê uma olhada em padrões de arquitetura versus objeto-relacional padrões comportamentais Fonte de dados:

PEAA Catálogo


DAO (Data Access Object) é parte do catálogo padrões J2EE núcleo:

O padrão DAO


Este é um tutorial de partida para Hibernate:

Hibernate


A página oficial da Toplink:

Toplink


Finalmente eu "pensar" o bom pensar em JPA é que você pode mudar de fornecedor recentemente.

simples Iniciar e, em seguida, evoluir.

Espero que isso ajude.

Outras dicas

Ele faz parecer que seria um exagero para uma aplicação muito simples, especialmente se você não tem planos para expandir nele sempre. No entanto, também parece que poderia ser útil para usar aqueles com este aplicativo simples para que você tenha uma melhor compreensão de como eles funcionam para a próxima vez que você tem algo que poderia usá-los.

Você quer dizer planície antiga JDBC? Um pequeno projeto pode ser uma boa oportunidade para pegar um dos frameworks ORM, especialmente se você tem o tempo.

Sem mais informações é difícil para fornecer uma maneira recomendação de um ou outro no entanto.

A minha regra de ouro é se é somente leitura, eu estou disposto a fazê-lo em JDBC, embora eu prefira usar um projeto Hibernate vazio com SQLQuery para tirar proveito de mapeamento do tipo de Hibernate. Uma vez que eu tenho que fazer as gravações, eu vou com Hibernate, porque é muito mais fácil para definir alguns atributos e, em seguida, chamar de economia do que para definir cada coluna individualmente. E quando você tem que começar a otimizar para evitar alterações em objetos inalterada, você está muito melhor com um OR / M e sua checagem suja. Lidar com relações de chave estrangeira é outro sinal de que você precisa mapear uma vez e, em seguida, usar os getters. A mesma lógica se aplicaria a Toplink, embora a menos que você adicionou algo como HQL nos 3 anos desde que eu usei, Hibernate seria muito melhor para este tipo de transição de SQL puro. Tenha em mente que você não tem que mapear cada objeto / mesa, apenas aqueles onde há uma clara vantagem. Na minha experiência, a maioria dos projetos que não use uma já existente OR / M acabar construindo um novo, que é uma má idéia.

O melhor maneira de aprender ORM é em um projeto pequeno. Comece neste projeto.

Uma vez que você pegar o jeito dele, você vai usar ORM para tudo.

Não há nada pequeno demais para ORM. Após o seu primeiro par de projetos, você vai achar que você não pode trabalhar de outra maneira. O mapeamento ORM geralmente faz mais sentido do que quase qualquer outra forma de trabalhar.

olhar para os vários guias toplink aqui, eles têm de introdução, exemplos, cenários etc

http://docs.oracle.com/cd/ E14571_01 / web.1111 / b32441 / toc.htm

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top