Prefácio
No desenvolvimento de Javaweb, os mais clássicos são a combinação SSH Framework e a combinação SSM Framework. Agora, muitas empresas de TI estão dispostas a usar o SSM. Para H e M aqui, Hibernate e Mybatis, deixe -me falar brevemente sobre isso hoje.
Jogando machado na porta
Durante a aula, muitas vezes digo aos alunos que você deve entender qualquer técnica:
Explicação do conhecimento
Hibernate e Mybatis são ORM muito populares (mapeamento de objetos relacionados a objetos, para ser franco, uma tecnologia que mapeia as estruturas da camada de bancos de dados). Em essência, ainda é o JDBC encapsulado para facilitar nosso uso e simplificar nosso desenvolvimento. Vamos descobrir alguns problemas primeiro:
Por que a introdução de uma camada de persistência pode resolver esse problema? Análise: Um mecanismo pode ser introduzido na camada de persistência, que pode ser usada como tradução. Para diferentes bancos de dados na parte inferior, instruções HQL e instruções de consulta dinâmica são traduzidas em diferentes instruções SQL. Isso resolve o problema de que não há necessidade de alterar as instruções SQL após a substituição do banco de dados e a quantidade de código será bastante reduzida.
É tão bom, então como o Hibernate e Mybatis implementaram a solução acima, ou seja, como o ORM deles foi implementado?
Hibernado
No hibernato, esse mecanismo é um arquivo de configuração hibernate.cfg.xml (colocado no diretório SRC)
<Hibernate-Configuration> <Session-Factory> <Propriedade name = "Connection.url"> jdbc: mysql: // localhost/hibernate </propriedade> <names name = "conexão.username"> root </propriedade> <names name = "conexão.password"> sabre </propriedades> <nome) <Propriedade name = "dialect"> org.hibernate.dialect.mysqldialect </propriedade> <!-Declaração DDL cria automaticamente tabelas-> <propriedade name = "hbm2ddl.auto"> nenhum </sition> <propriedades name = "show_sql"> true </propriedades> <weead) name = "hibernate.connection.provider_class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionProvider </propriedade> <!- Número mínimo de conexões JDBC no pool de conexões. Hibernate Padrões para 1-> <Propriedade name = "hibernate.c3p0.min_size"> 5 </propriedade> <!-O número máximo de conexões JDBC no pool de conexões. Hibernate Padrives para 100-> <Propriedade name = "hibernate.c3p0.max_size"> 20 </propriedade> <!-Quando remover uma conexão ociosa em segundos do pool de conexões. O padrão é 0, nunca expira-> <propriedade name = "hibernate.c3p0.timeout"> 300 </propriedade> <!-o número de declarações pré-compiladas em cache. Usado para melhorar o desempenho. Padrões de hibernato para 0, o cache não está disponível-> <propriedades name = "hibernate.c3p0.max_statements"> 100 </propriedade> <!-tempo ocioso (em segundos) antes da verificação automaticamente verificada. Hibernate Padrões para 0-> <Propriedade name = "hibernate.c3p0.idle_test_period"> 3000 </propriedade> <!-executando de forma independente. Se você obtiver a sessão através do getCurrentSession (), precisará defini-la da seguinte maneira-> <propriedade name = "current_session_context_class"> thread </erouse> <!-duas maneiras de mapear classes persistentes-> <paping/> <maping Resource = "com serup/model/professor.hbernMl"/>>
Depois que o projeto mudar o banco de dados, o que precisa ser modificado são apenas vários atributos nesse arquivo, e o código lógico da camada de negócios não precisa ser modificado.
Usando o Hibernate for Development é recomendado:
** Objeto de domínio ---> Mapeamento ---> Banco de dados Em outras palavras, objetos e tabelas precisam ter um mapeamento, e esse mapeamento possui dois métodos de configuração no hibernato **
1. Método XML (classe Name.hbm.xml)
Estabelecer uma relação de mapeamento entre a tabela e a classe através do arquivo HBM
2. Método de anotação
Posteriormente, com engenharia reversa, tornou -se muito mais simples e você pode gerar diretamente o arquivo correspondente através da tabela de banco de dados.
Mybatis
Em Mybatis, esse mecanismo também se baseia em um arquivo de configuração mybatis-config.xml (colocado no diretório SRC)
<figuration> <Propriedades Resource = "SQLSERVERINFO.PROPERTIES"/> <!-Arquivo de configuração do banco de dados-> <TypeAliases> <Nome do pacote = "com.demo.domain"/> <!-Pacotes de varredura com tipo de tipo de tipo para variar um arquivo separadamente- type = "jdbc"/> <dataSource type = "pooled"> <propriedade name = "driver" value = "$ {driver}"/> <propriedade name = "url" value = "$ {url}"/> <names name = "userName" $ = "$ {username}"/> <propriedades = "senha" "=" = "=" $ {Username}/> <weead) </ambientes> <Mappers> <!-Mapeamento de arquivos para concluir operações específicas do CRUD-> <Mapper Resource = "com/Demo/Domain/UsermApper.xml"/> </Mappers> </figuration> Dessa forma, toda vez que você altera o banco de dados, você só precisa modificar o arquivo de configuração.
Usando Mybatis for Development recomenda o seguinte:
** Crie um banco de dados e crie várias tabelas ---> Engenharia reversa gera automaticamente o código necessário para a execução mybatis (mapper.java, mapper.xml, po ..) ---> Escreva a camada de controle e a camada de serviço de acordo com a lógica de negócios. **
Diferenças
Existem várias comparações na internet, e eu só falo sobre alguns pontos diferentes, eu acho
1. O hibernato possui uma linguagem de consulta orientada a objetos chamada HQL. Isso é muito poderoso. Ele permite que os macacos que não conhecem as instruções SQL adicionam, excluam, modem e pesquisem no banco de dados, mas essa também é sua fraqueza. As instruções SQL não podem ser otimizadas.
2. Mybatis requer configuração de instrução SQL, o que significa que ela ainda requer conhecimento básico do banco de dados para começar. Além disso, os iniciantes devem ter encontrado muitas armadilhas no mapeamento de resultados.
3. Nunca fiz um projeto particularmente grande. Se não houver requisitos de desempenho especiais, o Hibernate ainda é mais fácil de implementar funções.
Ajuste do sistema
Solução de ajuste da Hibernate
Solução de ajuste mybatis
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.