Eu fiz algumas pesquisas por conta própria e entendi o conceito básico. Mas algumas idéias só podem ser obtidas através da experiência real.
Quais são as vantagens do myBatis que valeriam a pena aprender uma nova estrutura?
Em que caso você evitaria usá-lo?
orm
database-development
hibernate
Kshitiz Sharma
fonte
fonte
Respostas:
Considere o que você está tentando alcançar. Normalmente, o modelo de Segregação de Resposta à Consulta de Comando funciona bem para domínios complexos.
O motivo é que você está tentando fazer uma de duas coisas normalmente:
O Hibernate funciona bem no caso 1, permitindo que você faça um POJO e persista / atualize. Ele também faz isso rapidamente, a menos que seu domínio seja muito grande.
O myBatis é ótimo para buscar consultas (caso 2) em que você apenas deseja uma resposta. O Hibernate tentaria carregar o gráfico inteiro do objeto e você precisaria começar a ajustar as consultas com os truques do LazyLoading para mantê-lo funcionando em um domínio grande. Isso é importante ao executar consultas analíticas complexas que nem retornam objetos de entidade. O Hibernate oferece apenas SqlQuery e Bean Transformers nesse caso com grandes tipos padrão como BigDecimal, enquanto o myBatis poderia facilmente mapear para uma simples não-entidade POJO.
Esses dois casos são a diferença entre os comandos nos quais você deseja alterar os dados do domínio e as respostas nas quais você deseja apenas buscar alguns dados.
Portanto, considere esses dois casos e o que seu aplicativo faz. Se você tem um domínio simples e apenas busca informações, use myBatis. Se você possui um domínio complexo e persiste entidades, use o Hibernate. Se você fizer as duas coisas, considere uma abordagem híbrida. É isso que usamos em nosso projeto, que possui milhares de entidades para mantê-lo sob controle. ;)
fonte
MyBatis é centralizado em SQL. Ele ajuda você a chamar instruções SQL e mapear resultados (tabelas) para árvores de objetos.
O principal benefício é que não é um ORM. Ele não mapeia tabelas para objetar, para que não sofra a incompatibilidade de impedância da orm. Adapta-se bem a bancos de dados complexos ou herdados ou a usar recursos de banco de dados, como procedimentos armazenados, visualizações e outros.
É muito simples e fácil de aprender, assim também se encaixa em equipes pouco qualificadas, porque não há necessidade de ter um guru de hibernação entre elas.
Dê uma olhada no jpetstore 6 http://mybatis.org/spring/sample.html
fonte
Como a pergunta se refere ao meu comentário , eis o que eu tinha em mente ao escrevê-lo.
Antes de tudo, é derivado do contexto da sua pergunta original. Em outras circunstâncias, eu poderia dar um conselho diferente. O ponto que me fez sugerir MyBatis é o seguinte:
Em um dos projetos anteriores, nossa equipe considerou mudar do Hibernate pelos motivos que você descreve. Assim como você, mudaríamos para o JDBC, mas colegas de outro projeto nos recomendaram o MyBatis. A equipe decidiu tentar, mantendo o JDBC como uma opção de fallback no caso de algo der errado.
Naquele momento, eu não sabia nada sobre o MyBatis, mas tinha experiência suficiente com o JDBC para garantir que ele fizesse o trabalho. Apesar disso, eu estava apoiando fortemente a ideia de experimentar o MyBatis, a principal razão é que, de acordo com minha experiência passada, a quantidade de código padrão que precisaríamos escrever com o JDBC seria assustadora.
Enfim, tentamos o MyBatis e funcionou como anunciado. Por isso escrevi o comentário sobre o qual você pergunta.
Caso você espere que eu dê uma visão geral detalhada da tecnologia, ou de alguma forma elogie sua superioridade - desculpe, não posso fazer isso. Se eu pudesse - eu já escreveria isso em uma resposta separada para sua pergunta original, em vez de fazer um breve comentário. Eu mencionei que não sabia nada sobre o MyBatis naquela época - bem, ainda tenho muito pouco conhecimento sobre isso. A transição do Hibernate foi feita por outros membros da equipe e não afetou o código no qual estou trabalhando. Recordei apenas as principais conclusões (com base nas quais fiz meu comentário), a saber: 1) o MyBatis resolveu os problemas que tínhamos com o Hibernate, 2) não apresentava problemas próprios e 3) nos permitiu evitar escrever o código padrão I estava esperando no caso, se mudarmos para JDBC. Isso é tudo.
fonte
O Hibernate é conhecido por muita magia , comportamento inesperado e grande curva de aprendizado. Existem outras estruturas por aí mais focadas na simplicidade e permitem que você esteja no controle.
myBatis é um deles, meu projeto MentaBean é outro. Eu escrevi um post sobre isso que pode ajudar.
fonte
Eu usei o Hibernate para um projeto de carregamento e transformação de dados há 5 anos, usando o Hibernate 3 e achei maravilhoso. Estou fazendo um pequeno aplicativo de comércio eletrônico e tentei usar o Hibernate 4 e fiquei extremamente decepcionado. Eles removeram as ferramentas e totalmente integrados ao IDE. Eu experimentei o MyBatis e vou trabalhar tudo em uma única noite e estou muito satisfeito com a facilidade de integração em um aplicativo. Eu acho que o Hibernate ficou muito inchado e eu usaria o EJB 3 sobre o Hibernate neste momento.
fonte