|
|
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 favor Resposta
(Fim)
|
Anterior:Falhou na configuração de um DataSourcePróximo:Jieyou Chá da Tarde | Quarta-feira, 20 de fevereiro de 2019
|