Anch'io sono poco esperto in Java, non conosco molto bene la famiglia Spring Bucket, e ho costruito un framework di progetto basato su tutorial online e su alcune esperienze personali.
Ambiente del progetto:Versione JDK: 1.8.0_171, versione mysql: 5.7.17, spring boot: 2.1.1.RELEASE, strumenti di sviluppo: idea.
Ibernazione e JPA
Il progetto web in questo articolo utilizza Hibernate come framework per il livello di persistenza. In Spring Boot, dobbiamo capire un altro concetto: JPA
La frase precedente può essere ambigua, ma non significa che JPA sia un concetto in Spring Boot. Invece, si tratta di Java Persistence API, che in cinese viene tradotta come: Java Persistence Layer API.
JPA è una specifica standard basata su ORM (o mappatura O/R), in cui JPA definisce solo regole standard e non fornisce implementazione.
Attualmente, le principali implementazioni di JPA sono Hibernate, EclipseLink, OpenJPA, ecc.
A causa del dominio di Hibernate nel campo della tecnologia di risoluzione dell'accesso dati, lo standard JPA è sostanzialmente dominato da Hibernate.
SpringBoot è un fucile automatico
Spring Data JPA è fornito come strumento di interfaccia per gli sviluppatori per applicare il framework Hibernate. Il nostro Spring Boot fornisce un "modulo di dipendenza automatica" completamente automatizzato: spring-boot-starter-data-jpa
Struttura delle dipendenze POM:
Qualcuno ha domande sul file POM senza una citazione per Hibernate?
Il motivo è che, come mostrato nella figura sopra, spring-boot-starter-data-jpa dipende da hibernate-core, e quando si fa riferimento a spring-boot-starter-data-jpa, il progetto Maven introdurrà automaticamente il pacchetto da cui dipende.
application.yml Profilo:
Informazioni sulla fonte dei dati di configurazione a molla link ufficiale:Il login del link ipertestuale è visibile.
########################################## ###datasource - Specifica le informazioni di connessione al database MySQL ###spring.datasource.url: Indirizzo MySQL ###spring.datasource.user: Nome utente del database ###spring.datasource.password: La password del database ###spring.datasource.driverClassName: Corrispondente al driver del database ###spring.datasource.max-attivo: Specifica il numero massimo di connessioni attive nel pool di connessioni ###spring.datasource.max-inattivo: Specifica il numero massimo di connessioni libere nel pool di connessioni. ###spring.datasource.min-idle: Specifica il valore minimo che deve essere mantenuto (per pool di connessione DBCP e Tomcat) ###spring.datasource.initial-size: Specifica il numero di connessioni inizialmente stabilite quando il pool di connessioni viene avviato ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled Sia abilitato PersistenceExceptionTranslationPostProcessor, il valore predefinito è vero ###spring.datasource.abandon-when-percentage-fullsetsetset: la percentuale di connessioni abbandonate chiuse o segnalate quando il timeout viene abbandonato ###spring.datasource.allow-pool-suspension Quando si utilizza Hikari pool, la possibilità di mettere in pausa il pool di connessione è impostato su falso ###spring.datasource.alternate-username-allowedse sono permessi nomi utente alternativi. ###spring.datasource.auto-commitSpecifica se gli aggiornamenti vengono automaticamente confermati. ###spring.datasource.catalog specifica il catalogo predefinito. ###spring.datasource.commit-on-return stabilisce se compromettere tutte le transazioni in sospeso quando la connessione viene restituita ###spring.datasource.connection-init-sql specifica che la connessione viene creata e aggiunta all'SQL eseguito prima del pool di connessioni. ###spring.datasource.connection-init-sqls Quando si utilizza il pool di connessione DBCP, specifica l'sql da eseguire all'inizializzazione ###spring.datasource.connection-properties. [chiave]Specifica gli attributi da configurare quando si utilizza il pool di connessione DBCP ###spring.datasource.connection-test-query specifica l'istruzione SQL che verifica la legittimità dell'esecuzione della connessione ###spring.datasource.connection-timeoutSpecifica il tempo di timeout per la connessione, in millisecondi. ###spring.datasource.continue-on-error-Quando inizializzi il database, incontrando un errore se continuare o meno, il predefinito è falso ###spring.datasource.data specifica lo script Data (DML) ###spring.datasource.data-source-class-name Specifica il nome completamente qualificato della sorgente dati. ###spring.datasource.data-source-jndi specifica l'indirizzo del jndi ###spring.datasource.data-source-properties. Quando si utilizza il pool di connessione Hikari, specificare gli attributi da impostare ###spring.datasource.db-properties utilizza il pool di connessioni Tomcat, specificando le proprietà da impostare ###spring.datasource.default-auto-commit viene automaticamente confermato. ###spring.datasource.default-catalog specifica il catalogo che si collega al predefinito. ###spring.datasource.default-read-onlyWhether impostare la connessione predefinita su sola lettura. ###spring.datasource.default-transaction-isolationSpecifica il livello di isolamento predefinito per le transazioni connesse. ###spring.datasource.driver-class-name specifica il nome della classe del driver, che viene automaticamente rilevato dall'URL jdbc di default. ###spring.datasource.fair-queue Se utilizzare le connessioni FIFO. ###spring.datasource.health-check-properties. [chiave] Attributo passato quando si usa il pool di connessione Hikari durante il controllo del battito cardiaco ###spring.datasource.idle-timeout Specifica per quanto tempo la connessione non viene utilizzata, impostata di default come inattiva ###spring.datasource.ignore-exception-on-preloadO meno che l'eccezione venga ignorata quando il pool di connessione viene inizializzato. ###spring.datasource.init-sqlsql che viene eseguito quando viene creata una connessione ###spring.datasource.initial-size specifica il numero di connessioni inizialmente stabilite quando il pool di connessioni viene avviato ###spring.datasource.initialization-fail-fastQuando si crea un pool di connessioni, non è possibile creare un numero minimo specificato di connessioni per lanciare un'eccezione ###spring.datasource.initializeSpecifica se inizializzare la sorgente dati con data.sql, default: true ###spring.datasource.isolate-internal-queries specifica se le query interne devono essere messe in quarantena, passando di default a false ###spring.datasource.jdbc-interceptors Quando si utilizza il pool di connessione Tomcat, specifica l'intercettore jdbc e la separazione a punto e virgola ###spring.datasource.jdbc-url specifica l'URL JDBC. ###spring.datasource.jmx-enabled è abilitato di default: false ###spring.datasource.jndi-nameSpecifica il nome del jndi. ###spring.datasource.soglia di rilevamento perditeQuanti millisecondi rilevi una perdita di connessione usando il pool di connessione Hikari? ###spring.datasource.log-abbandonato utilizza il pool di connessione DBCP per tracciare istruzioni o connessioni abbandonate, il predefinito è falso ###spring.datasource.log-errori-di di validazioneQuando si utilizza il pool di connessione Tomcat, se stampare un errore di validazione. ###spring.datasource.login-timeout Specifica il tempo di timeout per la connessione al database. ###spring.datasource.max-età specifica l'età massima delle connessioni nel pool di connessioni ###spring.datasource.max-durata specifica la durata massima delle connessioni nel pool di connessioni, in millisecondi. ###spring.datasource.max-open-prepared-statements specifica il numero massimo di dichiarazioni preparate che vengono aperte. ###spring.datasource.max-wait specifica il tempo massimo di attesa affinché il pool di connessioni aspetti il ritorno della connessione, in millisecondi. ###spring.datasource.maximum-pool-sizeSpecifica il numero massimo di connessioni nel pool di connessioni, incluse quelle attive e inattive. ###spring.datasource.min-evictable-idle-time-millisSpecifica una connessione libera per il tempo minimo in cui può restare inattiva prima di poter essere liberata. ###spring.datasource.min-idle specifica il valore minimo che deve essere mantenuto (per pool di connessione DBCP e Tomcat) ###spring.datasource.minimum-idle specifica il numero minimo di connessioni libere mantenute da una connessione, e quando si utilizza HikariCP. ###spring.datasource.name Specifica il nome della fonte dati. ###spring.datasource.num-tests-per-eviction-run specifica il numero di oggetti quando si esegue ogni thread evitor di oggetti inattivi ###spring.datasource.passwordSpecifica la password del database. ###spring.datasource.platform specifica la Piattaforma (schema-${platform}.sql da usare per lo schema, che di default è: all ###spring.datasource.pool-nameSpecifica il nome del pool di connessione. ###spring.datasource.pool-prepared-statementsSpecifica se mettere in pool le statement. ###spring.datasource.propagare-interrupt-stateO meno propagare lo stato dell'interrupt se il thread viene interrotto in attesa della connessione. ###spring.datasource.solo lettura Quando si utilizza il pool di connessione Hikari, se è necessario segnare la sorgente dati come solo lettura ###spring.datasource.register-mbeans specifica se il pool di connessione Hikari registra MBeans JMX. ###spring.datasource.remove-abandoned specifica se eliminare una connessione immediatamente dopo il timeout abbandonato. ###spring.datasource.remove-abandoned-timeout Specifica il momento in cui la connessione dovrebbe essere abbandonata. ###spring.datasource.rollback-on-returnSe annullare una transazione in sospeso quando si restituisce una connessione. ###spring.datasource.schema specifica lo script Schema (DDL). ###spring.datasource.separator specifica il separatore di istruzioni per inizializzare lo script, di default: ; ###spring.datasource.sql-script-encoding specifica la codifica degli script SQL. ###spring.datasource.suspect-timeoutSpecifica il timeout prima di stampare la connessione abbandonata. ###spring.datasource.test-on-borrowQuando si prende in prestito una connessione da un pool di connessioni, se testare la connessione. ###spring.datasource.test-on-connect viene creato, se testare la connessione ###spring.datasource.test-on-returnSe la connessione viene restituita al pool di connessioni. ###spring.datasource.test-while-idleWhether eseguire un test di connessione quando la connessione è inattiva. ###spring.datasource.time-between-eviction-runs-millis Specifica l'intervallo di tempo operativo tra i controlli delle connessioni inattive, la pulizia abbandonata della connessione e la dimensionamento del pool di connessione inattiva ###spring.datasource.transaction-isolation specifica il livello di isolamento delle transazioni, che viene specificato quando si utilizza il pool di connessione Hikari ###spring.datasource.url specifica l'URL JDBC. ###spring.datasource.use-disposable-connection-façade avvolge la connessione per impedirne l'uso dopo la chiusura. ###spring.datasource.use-è uguale a se usare String.equals() per sostituire ==. ###spring.datasource.use-lock è bloccato sull'operazione di connessione ###spring.datasource.usernameSpecifica il nome del database. ###spring.datasource.validation-interval specifica quanti ms eseguire un controllo di connessione. ###spring.datasource.validation-query specifica l'istruzione SQL query per la validazione della connessione quando si ottiene una connessione. ###spring.datasource.validation-query-timeout Specifica il tempo di timeout per la query di validazione della connessione. ###spring.datasource.validation-timeout Imposta il tempo di timeout per la convalida della connessione, specificato quando si utilizza il pool di connessione Hikari ###spring.datasource.validator-class-name Il qualificatore completo del validatore usato per testare la query. ###spring.datasource.xa.data-source-class-name Specifica il qualificatore completo della sorgente dati. ###spring.datasource.xa.properties specifica le proprietà passate alla sorgente dati 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-attivo=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.iniziale-dimensione=10 ########################################## ##SPring Informazioni sulla configurazione JPA ###spring.jpa.database specifica il database di destinazione. ###spring.jps.show-sq: Se visualizzare le istruzioni SQL ###spring.jpa.hibernate.ddl-auto specifica la modalità DDL (nessuno, validare, aggiornare, creare, creare-drop). Quando si utilizza un database incorporato, il valore predefinito è create-drop, altrimenti non è nessuno. ###spring.jpa.hibernate.naming-strategySpecifica la politica di denominazione. ###其他: ###spring.jpa.database-platformSpecifica il tipo di database target. ###spring.jpa.generate-ddl se inizializzare lo schema all'avvio, predefinito su false ###spring.jpa.hibernate.ddl-auto specifica la modalità DDL (nessuno, validare, aggiornare, creare, creare-drop). Quando si utilizza un database incorporato, il valore predefinito è create-drop, altrimenti non è nessuno. ###spring.jpa.hibernate.naming-strategySpecifica la politica di denominazione. ###spring.jpa.open-in-view registra OpenEntityManagerInViewInterceptor e collega JPA EntityManager al thread di richiesta, il predefinito è vero ###spring.jpa.properties aggiunge attributi aggiuntivi al provider JPA. ###spring.jpa.show-sql Se abilitare il log SQL è impostato di default su falso ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = vero spring.jpa.hibernate.ddl-auto = aggiornamento spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
L'intera struttura del pacchetto
Configurazione della fonte dati:
Classe di entità:
Interfaccia operativa del database:
L'interfaccia operativa del database eredita dalla classe generica JpaRepository e, quando la eredita, acquisisce il potere divino che conferisce agli sviluppatori:
Possiamo chiamare direttamente questi metodi per eseguire operazioni nel database, e possiamo anche personalizzare HQL per completare altre operazioni che si adattino alla nostra personalità, come:
In questo codice, tramite @Query commento,Completato la stesura di HQLdove ":name" è coerente con il parametro nell'annotazione @Param qui sotto.
Nota: Il nome della tabella in HQL dovrebbe essere il nome della classe della mappa ORM, e HQL presenta alcune differenze rispetto alle istruzioni SQL tradizionali, come il significato di "*" diverso, ecc.
Se non sei abituato a usare HQL, puoi anche usare istruzioni SQL:
Il metodo sopra riportato è ancora efficace quando viene eseguito.nativeQuery to true significa usare il linguaggio SQL。
Classe di controller:
Avvia il progetto
Hibernate mapperà automaticamente le classi di entità al database per creare tabelle di database rilevanti per noi, e corrisponderà automaticamente alle tabelle del database basandosi su annotazioni come @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO), ecc. Risparmi molto lavoro di tabulazione.
(Prima di iniziare il progetto, devi prima costruire il database e la tabella verrà creata automaticamente)
hibernate_sequence tabella è una strategia di generazione di id @GeneratedValue annotata, GenerationType.AUTO rappresenta la generazione automatica, a condizione che l'attributo id debba essere un attributo int o di tipo long; se si tratta di un id di tipo String, aggiungere questa annotazione sopra l'id riporterà immediatamente un errore. Pertanto, se si tratta dell'id del tipo String, non è necessario annotare l'id con @GeneratedValue (strategy = GenerationType.AUTO).
Richiedi un test
Completa la richiesta e il salvataggio dati tramite get e post rispettivamente.
evocareIl login del link ipertestuale è visibile.L'interfaccia POST richiede di aggiungere dati, come mostrato nella figura seguente:
La query del database è la seguente:
Scarica i dati attraverso la seguente interfaccia:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Nota: Come richiesto dall'interfaccia sopra, Java è molto sensibile alla sensibilità a maiuscole, sia che si tratti dell'indirizzo URL o dei parametri, deve essere sensibile alla maiuscula! Se una lettera è maiuscola o minuscola, la richiesta non raggiungerà l'interfaccia o il parametro sarà vuoto!
Il druido monitora le seguenti situazioni:
Infine, allega il codice sorgente:
Turisti, se volete vedere il contenuto nascosto di questo post, vi prego Risposta
(Fine)
|