Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 36133|Resposta: 7

[Fonte] Spring Boot Hibernate Druid Tutorial de Construção do Projeto MySQL [com código-fonte]

[Copiar link]
Publicado em 20/02/2019 14:44:57 | | | |
Também sou meio experiente em Java, não conheço muito bem a família Spring Bucket, e construí uma framework de projeto baseada em tutoriais online e em algumas experiências pessoais.
Ambiente do Projeto:Versão JDK: 1.8.0_171, versão mysql: 5.7.17, spring boot: 2.1.1.RELEASE, ferramentas de desenvolvimento: idea.

Hibernate e JPA

O projeto web neste artigo usa o Hibernate como estrutura da camada de persistência. Em Spring Boot, precisamos entender outro conceito: JPA

A frase anterior pode ser ambígua, mas isso não significa que JPA seja um conceito em Spring Boot. Em vez disso, é a API de Persistência do Java, que é traduzida para o chinês como: API da Camada de Persistência do Java.

JPA é uma especificação padrão baseada em ORM (ou mapeamento O/R), na qual JPA define apenas regras padrão e não fornece implementação.

Atualmente, as principais implementações do JPA são Hibernate, EclipseLink, OpenJPA, entre outras.

Devido ao domínio do Hibernate no campo da tecnologia de resolução de acesso a dados, o padrão JPA é basicamente dominado pelo Hibernate.

SpringBoot é um rifle automático

O Spring Data JPA é fornecido como uma ferramenta de interface para desenvolvedores aplicarem o framework Hibernate. Nosso Spring Boot oferece um "módulo automático de dependência" totalmente automatizado: spring-boot-starter-data-jpa


Estrutura de Dependência de POM:

Alguém tem dúvidas sobre o arquivo POM sem citação para hibernação?



A razão é que, como mostrado na figura acima, spring-boot-starter-data-jpa depende do núcleo hibernado, e ao referenciar o spring-boot-starter-data-jpa, o projeto maven automaticamente introduz o pacote do qual depende.


application.yml Perfil:

Informação oficial da fonte de dados de configuração da Spring: link oficial:O login do hiperlink está visível.

##########################################
###datasource - Especifique as informações de conexão do banco de dados MySQL
###spring.datasource.url: Endereço MySQL
###spring.datasource.user: Nome de usuário do banco de dados
###spring.datasource.password: A senha do banco de dados
###spring.datasource.driverClassName: Correspondente ao driver do banco de dados
###spring.datasource.max-ativo: Especifica o número máximo de conexões ativas no pool de conexões
###spring.datasource.max-inativa: Especifica o número máximo de conexões livres no pool de conexões.
###spring.datasource.min-idle: Especifica o valor mínimo que deve ser mantido (para pools de conexão DBCP e Tomcat)
###spring.datasource.initial-size: Especifica o número de conexões inicialmente estabelecidas quando o pool de conexões é iniciado
###
###其他信息总结:
###spring.dao.exceptiontranslation.enabled Se o PersistenceExceptionTranslationTranslatorPostProcessor estiver ativado, o padrão é verdadeiro
###spring.datasource.abandon-when-percentage-fulldefine a porcentagem de conexões abandonadas que são fechadas ou reportadas quando o timeout é abandonado
###spring.datasource.allow-pool-suspension Ao usar o pool Hikari, se permitir a pausa do pool de conexão fica configurado como falso
###spring.datasource.nome-de usuário alternativo-permitidose nomes de usuário alternativos são permitidos.
###spring.datasource.auto-commitEspecifica se as atualizações são automaticamente confirmadas.
###spring.datasource.catalog especifica o catálogo padrão.
###spring.datasource.commit-on-return determina se deve comprometer todas as transações pendentes quando a conexão for retornada
###spring.datasource.connection-init-sql especifica que a conexão é criada e adicionada ao SQL executado antes do pool de conexões.
###spring.datasource.connection-init-sqls Ao usar o pool de conexões DBCP, especifique o sql a ser executado na inicialização
###spring.datasource.connection-properties. [chave]Especifica os atributos a serem configurados ao usar o pool de conexões DBCP
###spring.datasource.connection-test-query especifica a instrução SQL que verifica a legitimidade da execução da conexão
###spring.datasource.connection-timeoutEspecifica o tempo de espera da conexão, em milissegundos.
###spring.datasource.continue-onerrorAo inicializar o banco de dados, encontrando um erro se continuar ou não, o padrão é falso
###spring.datasource.data especifica o script Data (DML)
###spring.datasource.data-source-class-name Especifica o nome totalmente qualificado da fonte de dados.
###spring.datasource.data-source-jndi especifica o endereço do jndi
###spring.datasource.data-source-properties. Ao usar o pool de conexões Hikari, especifique os atributos a serem definidos
###spring.datasource.db-properties utiliza o pool de conexões Tomcat, especificando as propriedades a serem definidas
###spring.datasource.default-auto-commit é automaticamente confirmado.
###spring.datasource.default-catalog especifica o catálogo que se conecta ao padrão.
###spring.datasource.default-only-read-onlySe definir a conexão padrão para somente leitura.
###spring.datasource.default-transaction-isolationEspecifica o nível padrão de isolamento para transações conectadas.
###spring.datasource.driver-class-name especifica o nome da classe do driver, que é automaticamente detectado a partir da URL jdbc por padrão.
###spring.datasource.fair-queue Se deve usar conexões de retorno FIFO.
###spring.datasource.health-check-properties. [chave] Atributo passado ao usar o pool de conexão Hikari durante o teste de batimentos cardíacos
###spring.datasource.idle-timeout Especifica por quanto tempo a conexão não é usada, que é definida como inativa por padrão
###spring.datasource.ignore-exception-on-preload Se a exceção é ignorada quando o pool de conexão é inicializado.
###spring.datasource.init-sqlsql que executa quando uma conexão é criada
###spring.datasource.initial-size especifica o número de conexões inicialmente estabelecidas quando o pool de conexões é iniciado
###spring.datasource.initialization-fail-fastAo criar um pool de conexões, não é possível criar um número mínimo especificado de conexões para lançar uma exceção
###spring.datasource.initializeEspecifique se deve inicializar a fonte de dados com data.sql, padrão: true
###spring.datasource.isolate-internal-queries especifica se consultas internas devem ser colocadas em quarentena, sendo que o padrão é false
###spring.datasource.jdbc-interceptors Ao usar o pool de conexões Tomcat, especifique o interceptor jdbc e a separação por ponto e vírgula
###spring.datasource.jdbc-url especifica a URL do JDBC.
###spring.datasource.jmx-enabled está ativado por padrão: false
###spring.datasource.jndi-nameEspecifica o nome do jndi.
###spring.datasource.threshold-detecção-de vazamento: Quantos milissegundos você detecta um vazamento de conexão ao usar o pool de conexão do Hikari?
###spring.datasource.log-abandonado usa o pool de conexões DBCP para rastrear instruções ou conexões abandonadas, o padrão é falso
###spring.datasource.log-erros de validaçãoAo usar o pool de conexão Tomcat, se deve imprimir um erro de validação.
###spring.datasource.login-timeout Especifica o tempo de timeout para conexão ao banco de dados.
A idade ###spring.datasource.max especifica a idade máxima das conexões no pool de conexões
###spring.datasource.max-vida útil especifica a vida útil máxima das conexões no pool de conexões, em milissegundos.
###spring.datasource.max-open-prepared-statements especifica o número máximo de declarações preparadas que são abertas.
###spring.datasource.max-wait especifica o tempo máximo de espera para o pool de conexões esperar o retorno da conexão, em milissegundos.
###spring.datasource.maximum-pool-sizeEspecifica o número máximo de conexões no pool de conexões, incluindo conexões ativas e ociosas.
###spring.datasource.min-evictable-idle-time-millisEspecifica uma conexão livre pelo tempo mínimo em que pode ficar ociosa antes de ser liberada.
###spring.datasource.min-idle especifica o valor mínimo que deve ser mantido (para pools de conexões DBCP e Tomcat)
###spring.datasource.minimum-idle especifica o número mínimo de conexões livres mantidas por uma conexão, e ao usar HikariCP.
###spring.datasource.name Especifique o nome da fonte de dados.
###spring.datasource.num-tests-per-eviction-run especifica o número de objetos ao executar cada thread evitor de objeto ocioso
###spring.datasource.passwordEspecifique a senha do banco de dados.
###spring.datasource.platform especifica a Plataforma (schema-${platform}.sql a ser usada para o esquema, que por padrão é: all
###spring.datasource.pool-nameEspecifica o nome do pool de conexão.
###spring.datasource.pool-prepared-statementsEspecifica se deve agrupar statements.
###spring.datasource.propagar-interrupção-estadoOu propagar o estado da interrupção se a thread for interrompida enquanto espera pela conexão.
###spring.datasource.only-readAo usar o pool de conexões Hikari, se marcar a fonte de dados como somente leitura
###spring.datasource.register-mbeans especifica se o pool de conexão Hikari registra MBeans JMX.
###spring.datasource.remove-abandoned especifica se é deletado uma conexão imediatamente após o timeout abandonado.
###spring.datasource.remove-abandoned-timeout Especifica o momento em que a conexão deve ser abandonada.
###spring.datasource.rollback-on-returnOu se deve reverter uma transação pendente ao retornar uma conexão.
###spring.datasource.schema especifica o script Schema (DDL).
###spring.datasource.separator especifica o separador de instruções para inicializar o script, padrão: ;
###spring.datasource.sql-script-encoding especifica a codificação de scripts SQL.
###spring.datasource.suspect-timeoutEspecifica o tempo antes de imprimir a conexão abandonada.
###spring.datasource.testar-emprestadoAo pegar emprestada uma conexão de um pool de conexões, se deve testar a conexão.
###spring.datasource.test-on-connect é criado, se deve testar a conexão
###spring.datasource.test-on-returnSe a conexão é retornada ao pool de conexão.
###spring.datasource.test-while-idleOu se deve realizar um teste de conexão quando a conexão estiver ociosa.
###spring.datasource.time-between-eviction-runs-millis Especifica o intervalo de tempo de operação entre verificações de conexão ociosas, limpeza de conexão abandonada e dimensionamento do pool de conexão ociosa
###spring.datasource.transaction-isolation especifica o nível de isolamento da transação, que é especificado ao usar o pool de conexão Hikari
###spring.datasource.url especifica a URL do JDBC.
###spring.datasource.use-disposable-connection-façade envolve a conexão para evitar que ela seja usada após o fechamento.
###spring.datasource.use-é igual a se deve usar String.equals() para substituir ==.
###spring.datasource.use-lock está travado na operação de conexão
###spring.datasource.usernameEspecifique o nome do banco de dados.
###spring.datasource.validation-interval especifica quantos ms realizar uma verificação de conexão.
###spring.datasource.validation-query especifica a instrução SQL para validação de conexão ao obter uma conexão.
###spring.datasource.validation-query-timeout Especifica o tempo de timeout para a consulta de validação da conexão.
###spring.datasource.validation-timeout Define o tempo de timeout para validação da conexão, que é especificado ao usar o pool de conexão Hikari
###spring.datasource.validator-class-name O qualificador completo do validator usado para testar a consulta.
###spring.datasource.xa.data-source-class-name Especifica o qualificador completo da fonte de dados.
###spring.datasource.xa.properties especifica as propriedades passadas para a fonte de dados XA
###spring.datasource.url=jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF8
##########################################
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.max-ativo=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.tamanho-inicial=10
##########################################
##SPring Informações de configuração JPA
###spring.jpa.database especifica o banco de dados alvo.
###spring.jps.show-sq: Se deve ser exibido instruções SQL
###spring.jpa.hibernate.ddl-auto especifica o modo DDL (nenhum, validar, atualizar, criar, criar-drop). Ao usar um banco de dados embarcado, o padrão é create-drop, caso contrário é nenhum.
###spring.jpa.hibernate.naming-strategyEspecifique a política de nomes.
###其他:
###spring.jpa.database-platformEspecifica o tipo de banco de banco de dados-alvo.
###spring.jpa.generate-ddl se inicializar o esquema na inicialização, padrão é false
###spring.jpa.hibernate.ddl-auto especifica o modo DDL (nenhum, validar, atualizar, criar, criar-drop). Ao usar um banco de dados embarcado, o padrão é create-drop, caso contrário é nenhum.
###spring.jpa.hibernate.naming-strategyEspecifique a política de nomes.
###spring.jpa.open-in-view registra OpenEntityManagerInViewInterceptor e vincula o JPA EntityManager ao thread de solicitação, o padrão é verdadeiro
###spring.jpa.properties adiciona atributos adicionais ao provedor JPA.
###spring.jpa.show-sql Se é necessário ativar o log SQL está configurado como falso por padrão
##########################################
spring.jpa.database = MYSQL
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = atualização
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.MelhoredNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.freemarker.charset=UTF-8

Toda a estrutura do pacote



Configuração da Fonte de Dados:




Classe de entidade:



Interface de operação do banco de dados:

A interface de operação do banco de dados herda da classe genérica JpaRepository, e quando a herda, ganha o poder divino que concede aos desenvolvedores:



Podemos chamar esses métodos diretamente para realizar operações de banco de dados, e também podemos personalizar o HQL para completar outras operações que se encaixem na nossa personalidade, tais como:

Neste código, por meio de @Query comentário,Concluí a redação do HQLonde ":name" é consistente com o parâmetro na anotação @Param abaixo.

Nota: O nome da tabela no HQL deve ser o nome da classe do mapa ORM, e o HQL tem algumas diferenças em relação às instruções SQL tradicionais, como o significado de "*" ser diferente, etc.

Se você não está acostumado a usar HQL, também pode usar instruções SQL:



O método acima ainda é eficaz quando é realizado.nativeQuery para true significa usar a linguagem SQL

Classe de controle:

Comece o projeto

Hibernate mapeará automaticamente classes de entidade para o banco de dados para criar tabelas relevantes para nós, e irá automaticamente corresponder tabelas de banco de dados com base em anotações como @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO), etc. Poupe muito trabalho de tabulação.


(Antes de iniciar o projeto, você precisa construir o banco de dados primeiro, e a tabela será criada automaticamente)



hibernate_sequence tabela é uma estratégia de geração de id @GeneratedValue anotada, GenerationType.AUTO representa geração automática, desde que o atributo id seja um atributo int ou long, se for um id do tipo String, adicionar essa anotação sobre o id reportará imediatamente um erro. Portanto, se for para o id do tipo String, você não precisa anotar o id com @GeneratedValue (strategy = GenerationType.AUTO).

Solicite um teste

Complete a solicitação de dados e o salvamento de dados através do get e do post, respectivamente.


invocarO login do hiperlink está visível.A interface POST solicita adicionar dados, conforme mostrado na figura a seguir:



A consulta ao banco de dados é a seguinte:



Obtenha os dados pela seguinte interface:

O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.



Nota: Como solicitado pela interface acima, o Java é muito sensível à sensibilidade maiúscula, seja pelo endereço URL ou pelos parâmetros, deve ser sensível a maiúsculas e minúsculas! Se uma letra for maiúscula ou minúscula, isso fará com que a solicitação não alcance a interface ou o parâmetro ficará vazio!

O Druida monitora as seguintes situações:






Por fim, anexe o código-fonte:

Turistas, se quiserem ver o conteúdo oculto deste post, por favorResposta


(Fim)





Anterior:Falhou na configuração de um DataSource
Próximo:Jieyou Chá da Tarde | Quarta-feira, 20 de fevereiro de 2019
Publicado em 21/02/2019 02:19:13 |
Dê uma olhada em aprender a aprender.
Publicado em 05/07/2019 17:27:02 |
Aprenda a aprender...
Publicado em 22/07/2019 14:15:41 |
Dê uma olhada em aprender a aprender.
Publicado em 21/11/2019 21:08:12 |
【Combate Prático】Spring Boot Hibernate Tutorial de Construção do Projeto MySQL
Publicado em 30/03/2020 13:52:54 |
Muito obrigado
Publicado em 28/06/2020 15:13:11 |
Dê uma olhada no aprendizado de código dos grandes
Publicado em 18/11/2020 23:57:19 |
Aprenda a aprender
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com