Eu não usei Mybatis muito antes, só sei que é uma estrutura de banco de dados ORM como o Hibernate. Como proficiência no uso de aumentos, descobri que é muito diferente do hibernado. Amigos interessados podem aprender isso nesse artigo.
Aproveitando este fim de semana, reservei um tempo para resolver algumas tecnologias comumente usadas, e o editor atualizará o conteúdo de tempos em tempos.
Primeiro, vamos apresentar brevemente os conceitos dos dois:
Hibernate: Hibernate é a estrutura ORM mais popular no momento e fornece um encapsulamento relativamente completo da estrutura do banco de dados.
Mybatis: Mybatis também é uma estrutura ORM muito popular, com o foco principal na relação de mapeamento entre Pojo e SQL.
Em segundo lugar, vamos falar sobre as diferenças entre os dois em vários aspectos:
1. A maior diferença entre os dois:
Para lógica simples, o Hibernate e o MyBatis possuem ferramentas de geração de código correspondentes que podem gerar métodos simples e básicos da camada DAO.
Para consultas avançadas, o Mybatis requer redação manual de instruções SQL e ResultMap. O Hibernate possui um bom mecanismo de mapeamento, portanto, os desenvolvedores não precisam se preocupar com a geração de SQL e o mapeamento de resultados, e podem se concentrar mais nos processos de negócios.
2. Comparação da dificuldade de desenvolvimento
O desenvolvimento de hibernato é mais difícil que o Mybatis. Principalmente porque o hibernato é complexo e grande e tem um longo ciclo de aprendizado.
Mybatis é relativamente simples, e Mybatis depende principalmente da escrita do SQL, fazendo com que os desenvolvedores se sintam mais familiares.
3. Comparação da escrita de SQL
O SQL da Mybatis é escrito manualmente, para que você possa especificar os campos para consulta, conforme necessário. No entanto, não há estatísticas de log, então você precisa usar o LOG4J para gravar logs.
O Hibernate também pode escrever o próprio SQL para especificar os campos que precisam ser consultados, mas isso destrói a simplicidade do desenvolvimento de hibernados. No entanto, o Hibernate possui suas próprias estatísticas de log.
4. Comparação da escalabilidade do banco de dados
Como todo o SQL está escrito no banco de dados, o MYBATIS possui baixa escalabilidade e migração.
A relação específica entre o hibernato e o banco de dados está no XML, portanto, o HQL não está muito preocupado com o banco de dados que ele usa.
5. Comparação de mecanismos de cache
Similaridades: além de usar o mecanismo de cache padrão do sistema, o cache de segundo nível de Hibernate e Mybatis pode substituir completamente o comportamento do cache implementando seu próprio cache ou criando adaptadores para outras soluções de cache de terceiros.
Diferenças: A configuração do cache secundário do Hibernato é configurada em detalhes no arquivo de configuração gerado pelo SessionFactory e, em seguida, é configurado no mapa específico do objeto de tabela que o cache está configurado.
A configuração de cache secundária da Mybatis é configurada em detalhes em cada mapa específico do objeto de tabela, para que diferentes mecanismos de cache possam ser personalizados para diferentes tabelas. E o Mybatis pode compartilhar a mesma configuração e instância do cache no espaço para nome, que é implementado através do cache-Ref.
Comparação dos dois: como o Hibernate possui um bom mecanismo de gerenciamento para objetos de consulta, os usuários não precisam se preocupar com o SQL. Portanto, se os dados sujos aparecerem ao usar o cache secundário, o sistema relatará um erro e prompt.
Nesse sentido, o Mybatis requer cuidados especiais ao usar o cache L2. Se o escopo das operações de atualização de dados não puder ser totalmente determinado, evite o uso cego do cache. Caso contrário, a aparência dos dados sujos trará grandes perigos ocultos para a operação normal do sistema.
6. Resumo:
mybatis: pequeno, conveniente, eficiente, simples, direto, semi-automático
Hibernato: poderoso, conveniente, eficiente, complexo, automático completo
Hibernate e Mybatis podem gerar sessionFactory a partir do arquivo de configuração XML através do SessionFactoryBuider e, em seguida, gerar sessão da SessionFactory e, finalmente, executar transações e instruções SQL.
A vantagem dos Mybatis é que o Mybatis pode executar otimização SQL mais detalhada, reduzir os campos de consulta e ser fácil de dominar.
A vantagem do hibernato é que o desenvolvimento da camada DAO é mais simples que o Mybatis, que requer manutenção do SQL e mapeamento de resultados. A portabilidade do banco de dados é muito boa, a portabilidade do banco de dados MYBATIS não é boa e diferentes bancos de dados precisam escrever SQL diferentes. Existe um melhor mecanismo de cache de nível 2 e o cache de terceiros pode ser usado. O próprio Mybatis fornece mecanismos de cache ruins.
mybatis:
1. É simples começar, aprender e usar e fornece função de ligação de objetos automática para consultas de banco de dados e continua uma boa experiência no uso do SQL. É bastante perfeito para projetos que não possuem requisitos de modelo de objetos tão altos.
2. A otimização SQL mais detalhada pode ser realizada, o que pode reduzir os campos de consulta.
3. A desvantagem é que a estrutura ainda é relativamente simples e as funções ainda estão faltando. Embora o código de ligação de dados seja simplificado, toda a consulta de banco de dados subjacente realmente precisa ser escrita por si mesmo, a carga de trabalho é relativamente grande e não é fácil se adaptar à modificação rápida do banco de dados.
4. O mecanismo secundário de cache é ruim.
Hibernate:
1. Funções poderosas, boa irrelevância de banco de dados e fortes recursos de mapeamento de O/R. Se você é bastante proficiente no hibernado de hibernação e encapsulado adequadamente, todo o código da camada de persistência do seu projeto será bastante simples, há muito pouco código para escrever, a velocidade de desenvolvimento é muito rápida e é muito legal.
2. Existe um melhor mecanismo de cache secundário e o cache de terceiros pode ser usado.
3. A desvantagem é que o limiar de aprendizado não é baixo e você deve ser proficiente nele. Como projetar o mapeamento de O/R, como equilibrar o modelo de desempenho e objeto e como usar o Hibernate Well requer sua experiência e capacidade de serem fortes.
Deixe -me dar uma metáfora vívida:
Mybatis: as ferramentas mecânicas são fáceis de usar e podem ser usadas o mais rápido possível, mas o trabalho ainda precisa ser feito por você mesmo, mas as ferramentas estão vivas; portanto, como fazê -las depende de mim.
Hibernate: Robot inteligente, mas é muito caro desenvolvê -lo (aprendizado, proficiência) e trabalho pode se livrar dele, mas apenas o que pode fazer.