5.1 Geração automática de esquema de dados
Ao configurar o Hibernate pela primeira vez, você pode ativar várias configurações interessantes. Eu não os trouxe antes, para não borrifar. Mas no final do nível penso em alguns deles para contar.
A primeira dessas configurações é o arquivo hbm2ddl.auto
. Pode ter 5 valores diferentes:
validar | Validação: O Hibernate verificará se os nomes e tipos de campos e colunas correspondem no banco de dados e nas anotações. Este é o modo mais comum. |
atualizar | Atualização: O Hibernate atualizará as tabelas no banco de dados se elas ou suas colunas forem diferentes do esperado. |
criar | Recriar: O Hibernate irá deletar todas as tabelas do banco de dados e recriá-las com base nos dados das anotações. |
criar-soltar | Criação-exclusão. No início do trabalho, o Hibernate irá criar todas as tabelas, ao final do trabalho, ele mesmo irá apagá-las. |
nenhum | O hibernate não fará nada. Se em algum lugar a base não corresponder à expectativa, erros serão lançados durante a execução das consultas. |
5.2 Solicitações de registro
A segunda configuração muito útil do Hibernate é o registro de todas as suas solicitações ao banco de dados: todas as solicitações ao banco de dados são duplicadas no console. Este é um recurso muito útil se você estiver fazendo alterações no código relacionado ao Hibernate.
Primeiro, você entenderá melhor como suas consultas são convertidas em SQL. Em segundo lugar, é mais fácil e mais cedo você poderá encontrar erros. E eles definitivamente vão. O Hibernate nem sempre funciona da maneira que esperamos. Isso é especialmente frequentemente associado a anotações: você as entende à sua maneira e hiberna à sua maneira.
A configuração que habilita o log é chamada hibernate.show_sql
. Se você definir seu valor como true, as consultas ao banco de dados serão gravadas no console. O parâmetro também é usado em conjunto com ele hibernate.format_sql
, o que permite definir um formato de consulta SQL conveniente no log.
Outra maneira de registrar solicitações no banco de dados é usar o registrador padrão . Tudo cedeu no fato do Hibernate já gravar suas consultas no logger padrão, mas apenas com o escopo - DEBUG. Você precisa alterar duas propriedades em seu registrador padrão:
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
Alterar o nível de BasicBinder para trace
adicionará parâmetros de consulta para nós, no entanto, de uma forma um pouco incomum - enumeração sequencial após a própria consulta.
A terceira abordagem é usar um driver proxy especial para o banco de dados .
Por exemplo, log4jdbc
ou p6spy
. Ambos os proxies estão funcionando e têm starters, embora log4jdbc
não houvesse commits por um longo tempo no momento da escrita.
<dependency>
<groupId>com.integralblue</groupId>
<artifactId>log4jdbc-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.gavlyukovskiy</groupId>
<artifactId>p6spy-spring-boot-starter</artifactId>
</dependency>
Não vou entrar em detalhes, só quero que você saiba que isso é possível.
5.3 dialetos SQL
E mais algumas informações básicas.
O Hibernate suporta um grande número de DBMSs. Cada um deles implementa um conjunto padrão de funções SQL e algumas outras próprias. Ou versões diferentes do SQL. Portanto, para trabalhar com esses SGBDs, você precisa informar ao Hibernate qual dialeto da linguagem SQL usar.
Aqui está uma lista dos dialetos mais populares:
PostgreSQLName | org.hibernate.dialect.PostgreSQLDialect |
banco de dados SAP | org.hibernate.dialect.SAPDBDialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Informix | org.hibernate.dialect.InformixDialect |
Servidor Microsoft SQL 2008 | org.hibernate.dialect.SQLServer2008Dialect |
MySQL | org.hibernate.dialect.MySQLDialect |
Oracle (qualquer versão) | org.hibernate.dialect.OracleDialect |
Oráculo 11g | org.hibernate.dialect.Oracle10gDialect |
Claro, pode haver qualquer número de tais dialetos. Você pode escrever seu próprio DBMS e seu próprio dialeto para ele.
Por que é importante especificar o dialeto correto?
Cada banco de dados pode ter tipos de dados ligeiramente diferentes. Portanto, para que o Hibernate funcione perfeitamente exatamente como você espera dele, você precisa informar qual dialeto da linguagem SQL ele precisa usar.
Aqui está uma imagem interessante que mostra como tudo está conectado na realidade:

5.4 Configurações populares
Para facilitar sua vida, aqui está uma lista completa de várias configurações:
MySQL 8.0 |
---|
|
MySQL 5.0 |
---|
|
PostgreSQLName |
---|
|
O MySQL 8.0 suporta mais recursos do que o MySQL 5.0, portanto, se você deseja que o Hibernate aproveite ao máximo todos eles, especifique o dialeto correto.
O banco de dados H2 geralmente é armazenado na memória, assim mem:test
como o nome do servidor SQL e o nome do esquema com o qual você trabalhará.
GO TO FULL VERSION