Novo Post: Alternativas ao JPA Hibernate. O que usar quando o JPA não atende meu projeto?

Neste post você verá alguns problemas que o JPA pode ter e como resolvê-los.
Você também encontrará 4 CRUDs (com código fonte) de diferentes frameworks que utilizam de diferentes abordagens.

Espero que você goste. [=

http://uaihebert.com/alternativas-ao-jpa-hibernate-o-que-usar-quando-o-jpa-nao-atende-meu-projeto/

Putz, query complexa no hibernate é horrível!

Sofri com uma que tem UNION e uns SUM’s. Tive que usar sql nativo e voltar pro ResultSet.
Nem seguindo linha a linha a documentação do Hibernate eu consegui. :frowning:

Bem legal o post, o senhor tá de parabéns.

[quote=ErickRAR]Putz, query complexa no hibernate é horrível!

Sofri com uma que tem UNION e uns SUM’s. Tive que usar sql nativo e voltar pro ResultSet.
Nem seguindo linha a linha a documentação do Hibernate eu consegui. :frowning:

Bem legal o post, o senhor tá de parabéns.[/quote]
Decisão certa, embora não precise voltar pro ResultSet do JDBC. Hibernate dá pleno suporte a SQL nativo, o que mantem a facilidade do Hibernate de hidratar os objetos automaticamente. Independente disso, importante é sempre usar SQL nativo para consultas complexas e query via objetos para situações mais diretas. Muita gente se desdobra em relatórios pra usar Criteria, HQL, sei lá o que QL, mais por purismo, sendo que resolveria muito mais rápido por SQL, até mesmo na manutenção, por mais que o impacto seja maior, é mais fácil entender.

Foi bem isso mesmo. Eu fiquei foi encucado mesmo por ter misturado as coisas. Umas consultas e criteria e essa com query nativa. Na minha cabeça fica parecendo que é gambiarra, mas pelo que vi isso é bastante adotado por aí…

Alguns pensam como não boa prática, mas geralmente é quem não está no dia a dia do desenvolvimento pra atender da melhor forma problemas para Negócio. Importante é a clareza no que faz, o que vai se sentir mais confortável para evoluir. Cada ferramenta tem que ser usada onde a mesma for ajudar, se atrapalha não é adequada.

[quote=Hebert Coelho]Neste post você verá alguns problemas que o JPA pode ter e como resolvê-los.
Você também encontrará 4 CRUDs (com código fonte) de diferentes frameworks que utilizam de diferentes abordagens.

Espero que você goste. [=

http://uaihebert.com/alternativas-ao-jpa-hibernate-o-que-usar-quando-o-jpa-nao-atende-meu-projeto/

[/quote]

Bacana… Estou lendo devagar. É bem grandinho o conteúdo.

Chave Composta: Essa, segundo minha opinião, é a maior dor de cabeça para quem desenvolve com o JPA. Ao mapear uma chave composta estamos adicionando uma enorme complexidade ao na hora de persistir, consultar e até mesmo na hora de mapear o objeto. Ao utilizar chave composta diversos problemas poderão aparecer, sendo que alguns desses problemas são bugs das implementações.

Isso realmente é algo que também me deixa muito descontente.
Pra contornar isso temos que mapear em classes complemente separadas das classes originais.
Parece ser contra intuitivo, mas só lendo pra entender porque é assim.

[quote=Luiz Augusto Prado][quote=Hebert Coelho]Neste post você verá alguns problemas que o JPA pode ter e como resolvê-los.
Você também encontrará 4 CRUDs (com código fonte) de diferentes frameworks que utilizam de diferentes abordagens.

Espero que você goste. [=

http://uaihebert.com/alternativas-ao-jpa-hibernate-o-que-usar-quando-o-jpa-nao-atende-meu-projeto/

[/quote]

Bacana… Estou lendo devagar. É bem grandinho o conteúdo.

Chave Composta: Essa, segundo minha opinião, é a maior dor de cabeça para quem desenvolve com o JPA. Ao mapear uma chave composta estamos adicionando uma enorme complexidade ao na hora de persistir, consultar e até mesmo na hora de mapear o objeto. Ao utilizar chave composta diversos problemas poderão aparecer, sendo que alguns desses problemas são bugs das implementações.

Isso realmente é algo que também me deixa muito descontente.
Pra contornar isso temos que mapear em classes complemente separadas das classes originais.
Parece ser contra intuitivo, mas só lendo pra entender porque é assim.

[/quote]
Concordo, é uma decisão difícil querer usar Hibernate em base de dados legada ou com costumes do tipo.

[quote=javaflex][quote=Luiz Augusto Prado][quote=Hebert Coelho]Neste post você verá alguns problemas que o JPA pode ter e como resolvê-los.
Você também encontrará 4 CRUDs (com código fonte) de diferentes frameworks que utilizam de diferentes abordagens.

Espero que você goste. [=

http://uaihebert.com/alternativas-ao-jpa-hibernate-o-que-usar-quando-o-jpa-nao-atende-meu-projeto/

[/quote]

Bacana… Estou lendo devagar. É bem grandinho o conteúdo.

Chave Composta: Essa, segundo minha opinião, é a maior dor de cabeça para quem desenvolve com o JPA. Ao mapear uma chave composta estamos adicionando uma enorme complexidade ao na hora de persistir, consultar e até mesmo na hora de mapear o objeto. Ao utilizar chave composta diversos problemas poderão aparecer, sendo que alguns desses problemas são bugs das implementações.

Isso realmente é algo que também me deixa muito descontente.
Pra contornar isso temos que mapear em classes complemente separadas das classes originais.
Parece ser contra intuitivo, mas só lendo pra entender porque é assim.

[/quote]
Concordo, é uma decisão difícil querer usar Hibernate em base de dados legada ou com costumes do tipo.[/quote]

Mesmo atualmente, com os conceitos de orientação a objetos, acho esquisito “ter” que mapear em classes separadas as chaves compostas.

[quote=Luiz Augusto Prado][quote=javaflex][quote=Luiz Augusto Prado][quote=Hebert Coelho]Neste post você verá alguns problemas que o JPA pode ter e como resolvê-los.
Você também encontrará 4 CRUDs (com código fonte) de diferentes frameworks que utilizam de diferentes abordagens.

Espero que você goste. [=

http://uaihebert.com/alternativas-ao-jpa-hibernate-o-que-usar-quando-o-jpa-nao-atende-meu-projeto/

[/quote]

Bacana… Estou lendo devagar. É bem grandinho o conteúdo.

Chave Composta: Essa, segundo minha opinião, é a maior dor de cabeça para quem desenvolve com o JPA. Ao mapear uma chave composta estamos adicionando uma enorme complexidade ao na hora de persistir, consultar e até mesmo na hora de mapear o objeto. Ao utilizar chave composta diversos problemas poderão aparecer, sendo que alguns desses problemas são bugs das implementações.

Isso realmente é algo que também me deixa muito descontente.
Pra contornar isso temos que mapear em classes complemente separadas das classes originais.
Parece ser contra intuitivo, mas só lendo pra entender porque é assim.

[/quote]
Concordo, é uma decisão difícil querer usar Hibernate em base de dados legada ou com costumes do tipo.[/quote]

Mesmo atualmente, com os conceitos de orientação a objetos, acho esquisito “ter” que mapear em classes separadas as chaves compostas. [/quote]
Com certeza. Particularmente prefiro não usar Hibernate em base de dados que usem chaves compostas (exceto many to many claro, a qual nem precisa mapear o que estamos criticando).

Sempre me incomodei com o fato de não poder contar com JPA pra tudo. Soluções que resolvem apenas metade dos problemas nunca me convenceram. Mas se a empresa onde trabalho adota assim como padrão, não iriei cortar os pulsos. heheheh

Primeira coisa que olho nesses projetos é se existe a possibildade da empresa em um futuro próximo mudar de banco ou de biblioteca de persistencia.

[quote=marcosalex]Sempre me incomodei com o fato de não poder contar com JPA pra tudo. Soluções que resolvem apenas metade dos problemas nunca me convenceram. Mas se a empresa onde trabalho adota assim como padrão, não iriei cortar os pulsos. heheheh

Primeira coisa que olho nesses projetos é se existe a possibildade da empresa em um futuro próximo mudar de banco ou de biblioteca de persistencia. [/quote]
Pois é, muitos casos se preocupam com isso sem necessidade. Grandes empresas que usam Oracle por exemplo dificilmente precisam lidar com isso.

[quote=marcosalex]Sempre me incomodei com o fato de não poder contar com JPA pra tudo. Soluções que resolvem apenas metade dos problemas nunca me convenceram. Mas se a empresa onde trabalho adota assim como padrão, não iriei cortar os pulsos. heheheh

Primeira coisa que olho nesses projetos é se existe a possibildade da empresa em um futuro próximo mudar de banco ou de biblioteca de persistencia. [/quote]

Huahahua… as vezes também penso isso, mas o que sugeriria no lugar?

Eu acho, a idéia do JPA e do Hibernate muito boas, sei que tem seus efeitos colaterais. Mas todas terão efeitos colaterais.

Temos uma cultura onde ninguém quer investir tempo desenvolvendo uma estrutura própria de persistência e acabam pegando o que já tem pronto, no mercado. Ai, por causa deste vício, capta-se funcionários com pouquíssimo conhecimento, mas que são capazes somente de executar a tarefa com o framework com o qual foram treinados. Vantagens x desvantagens…

É… mais um Cristo pro mundo malhar? A faculdade dos arqueiros substituída pela faculdade da pólvora.

No fim da idade média, levava-se 5 anos para se tornar um bom arqueiro. Com a invenção do mosquete, em 2 meses era suficiente para ensinar um soldado a atirar com eficiência muito maior do que a de seus concorrentes arqueiros. Um excelente soldado arqueiro perde espaço para um pereba armado. Vejam só como são as coisas… De repente, como numa profecia, de uma pseudociência como a alquimia, surge algo que ninguém esperava. Assim surgem as várias lendas de Hiram.

Fabriquem suas próprias “armas” porque… Nunca se sabe onde pode estar a idéia de 1.000.000 de dólares.