|
|
Postat pe 20.02.2019 14:44:57
|
|
|
|

De asemenea, sunt destul de familiarizat cu Java și nu sunt foarte familiarizat cu familia spring bucket, și am construit un framework de proiect bazat pe tutoriale online și pe unele experiențe personale.
Mediul proiectului:versiunea jdk: 1.8.0_171, versiunea mysql: 5.7.17, spring boot: 2.1.1.RELEASE, unelte de dezvoltare: idea.
Hibernate și JPA
Proiectul web din acest articol folosește Hibernate ca cadru pentru stratul de persistență. În Spring Boot, trebuie să înțelegem un alt concept: JPA
Propoziția anterioară poate fi ambiguă, dar asta nu înseamnă că JPA este un concept în Spring Boot. În schimb, este Java Persistence API, tradus în chineză ca: Java Persistence Layer API.
JPA este o specificație standard bazată pe ORM (sau mapare O/R), în care JPA definește doar reguli standard și nu oferă implementare.
În prezent, principalele implementări ale JPA sunt Hibernate, EclipseLink, OpenJPA etc.
Datorită dominației Hibernate în domeniul tehnologiei de rezoluție a accesului la date, standardul JPA este practic dominat de Hibernate.
SpringBoot este o pușcă automată
Spring Data JPA este oferit ca un instrument de interfață pentru dezvoltatori care doresc să aplice framework-ul Hibernate. Spring Boot oferă un "modul automat de dependență" complet automatizat: spring-boot-starter-data-jpa
Structura dependenței POM:
Are cineva întrebări despre fișierul pom fără citare pentru hibernare?
Motivul este că, așa cum se arată în figura de mai sus, spring-boot-starter-data-jpa depinde de hibernate-core, iar când se face referire la spring-boot-starter-data-jpa, proiectul Maven va introduce automat pachetul de care depinde.
application.yml Profil:
Link oficial despre sursa datelor de configurare Spring:Autentificarea cu hyperlink este vizibilă.
########################################## ###datasource - Specifică informațiile de conexiune la baza de date MySQL ###spring.datasource.url: Adresa MySQL ###spring.datasource.user: Nume de utilizator pentru baza de date ###spring.datasource.password: Parola bazei de date ###spring.datasource.driverClassName: Corespunzător driverului bazei de date ###spring.datasource.max-activ: Specifică numărul maxim de conexiuni active în pool-ul de conexiuni ###spring.datasource.max-idle: Specifică numărul maxim de conexiuni libere în pool-ul de conexiuni. ###spring.datasource.min-idle: Specifică valoarea minimă care trebuie menținută (pentru pool-urile de conexiuni DBCP și Tomcat) ###spring.datasource.initial-size: Specifică numărul de conexiuni stabilite inițial la începutul pool-ului de conexiuni ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled indiferent dacă PersistenceExceptionTranslationPostProcessor este activat, implicitul este adevărat ###spring.datasource.abandon-when-percentage-fullsetsetează procentul conexiunilor abandonate care sunt închise sau raportate când timeout-ul este abandonat ###spring.datasource.allow-pool-suspension Când se folosește Hikari pool, dacă se permite sau nu pauza pool-ului de conexiune este setat pe fals ###spring.datasource.alternate-username-alloweddacă sunt permise nume alternative de utilizator. ###spring.datasource.auto-commitSpecifică dacă actualizările sunt automat confirmate. ###spring.datasource.catalog specifică catalogul implicit. ###spring.datasource.commit-on-return stabilește dacă trebuie să commită toate tranzacțiile restante atunci când conexiunea este returnată ###spring.datasource.connection-init-sql specifică că conexiunea este creată și adăugată la sql-ul executat înainte de pool-ul de conexiuni. ###spring.datasource.connection-init-sqls Când folosești pool-ul de conexiuni DBCP, specifică sql-ul care urmează să fie executat la inițializare ###spring.datasource.conexiuni-proprietăți. [cheie] Specifică atributele care trebuie configurate atunci când se folosește pool-ul de conexiuni DBCP ###spring.datasource.connection-test-query specifică instrucțiunea SQL care verifică legitimitatea execuției conexiunii ###spring.datasource.connection-timeout Specifică timpul de timeout pentru conexiune, în milisecunde. ###spring.datasource.continue-on-error-Când inițializezi baza de date, întâmpinând o eroare dacă se continuă sau nu, implicitul este fals ###spring.datasource.data specifică scriptul Data (DML) ###spring.datasource.data-source-class-name Specifică numele complet calificat al sursei de date. ###spring.datasource.data-source-jndi specifică adresa jndi ###spring.datasource.data-sursă-proprietăți. Când se folosește pool-ul de conexiuni Hikari, specifică atributele de setat ###spring.datasource.db-properties folosește pool-ul de conexiuni Tomcat, specificând proprietățile de setat ###spring.datasource.default-auto-commit este automat commit. ###spring.datasource.default-catalog specifică catalogul care se conectează la cel implicit. ###spring.datasource.default-only-read-Fie să setezi conexiunea implicită pe read-only. ###spring.datasource.default-transaction-isolationSpecifică nivelul implicit de izolare pentru tranzacțiile conectate. ###spring.datasource.driver-class-name specifică numele clasei driverului, care este detectat automat implicit din URL-ul jdbC. ###spring.datasource.fair-queue Dacă să folosești conexiuni FIFO. ###spring.datasource.health-check-properties. [cheie] Atribut transmis când folosești pool-ul de conexiuni Hikari în timpul verificării bătăilor inimii ###spring.datasource.idle-timeout Specifică cât timp nu este folosită conexiunea, care este setată implicit pe inactivă ###spring.datasource.ignore-exception-on-preloadIndiferent dacă excepția este ignorată când pool-ul de conexiune este inițializat. ###spring.datasource.init-sqlsql care se execută atunci când se creează o conexiune ###spring.datasource.initial-size specifică numărul de conexiuni stabilite inițial când se începe pool-ul de conexiuni ###spring.datasource.initialization-fail-fastCând se creează un pool de conexiuni, nu este posibil să se creeze un număr minim specificat de conexiuni pentru a genera o excepție ###spring.datasource.initializeSpecifică dacă se inițializează sursa de date cu data.sql, implicit: true ###spring.datasource.isolate-internal-queries specifică dacă interogările interne trebuie carantinate, revenind implicit la false ###spring.datasource.jdbc-interceptors Când folosești pool-ul de conexiuni Tomcat, specifică interceptorul jdbc și separarea cu punct și virgulă ###spring.datasource.jdbc-url specifică URL-ul JDBC. ###spring.datasource.jmx-enabled este activat implicit: false ###spring.datasource.jndi-nameSpecifică numele jndi. ###spring.datasource.waste-detection-threshold Câte milisecunde detectezi o scurgere de conexiune când folosești pool-ul de conexiuni Hikari? ###spring.datasource.log-abandoned folosește pool-ul de conexiuni DBCP pentru a urmări instrucțiunile sau conexiunile abandonate, implicitul este fals ###spring.datasource.log-erori de validareCând se folosește pool-ul de conexiune Tomcat, dacă se imprimă o eroare de validare. ###spring.datasource.login-timeout Specifică timpul de timeout pentru conectarea la baza de date. Vârsta ###spring.datasource.max specifică vârsta maximă a conexiunilor din pool-ul de conexiuni ###spring.datasource.max-durata de viață specifică durata maximă de viață a conexiunilor din pool-ul de conexiuni, în milisecunde. ###spring.datasource.max-open-prepared-statements specifică numărul maxim de declarații pregătite care sunt deschise. ###spring.datasource.max-wait specifică timpul maxim de așteptare pentru ca pool-ul de conexiuni să aștepte revenirea conexiunii, în milisecunde. ###spring.datasource.maximum-pool-sizeSpecifică numărul maxim de conexiuni în pool-ul de conexiuni, inclusiv conexiuni active și inactive. ###spring.datasource.min-evictable-idle-time-millisSpecifică o conexiune liberă pentru timpul minim în care poate fi inactivă înainte de a putea fi eliberată. ###spring.datasource.min-idle specifică valoarea minimă care trebuie menținută (pentru pool-urile de conexiuni DBCP și Tomcat) ###spring.datasource.minimum-idle specifică numărul minim de conexiuni libere menținute de o conexiune, iar atunci când se folosește HikariCP. ###spring.datasource.name Specifică numele sursei de date. ###spring.datasource.num-tests-per-eviction-run specifică numărul de obiecte la rularea fiecărui thread evitor de obiecte inactive ###spring.datasource.passwordSpecifică parola bazei de date. ###spring.datasource.platform specifică Platforma (schema-${platform}.sql de folosit pentru schema, care implicit este la: all ###spring.datasource.pool-nameSpecifică numele pool-ului. ###spring.datasource.pool-prepared-statementsSpecifică dacă se combină instrucțiunile. ###spring.datasource.propagate-interrupt-stateIndiferent dacă se propagă starea întreruperii dacă firul este întrerupt în timp ce așteaptă conexiunea. ###spring.datasource.reader-onlyCând se folosește pool-ul de conexiuni Hikari, dacă trebuie marcat sursa de date ca doar citire ###spring.datasource.register-mbeans specifică dacă pool-ul de conexiuni Hikari înregistrează MBeans JMX. ###spring.datasource.remove-abandoned specifică dacă trebuie ștearsă o conexiune imediat după timeout-ul abandonat. ###spring.datasource.remove-abandoned-timeout Specifică ora la care conexiunea trebuie abandonată. ###spring.datasource.rollback-on-returnFie să anulezi o tranzacție în așteptare când redai o conexiune. ###spring.datasource.schema specifică scriptul Schema (DDL). ###spring.datasource.separator specifică separatorul de instrucțiuni pentru inițializarea scriptului, implicit: ; ###spring.datasource.sql-script-encoding specifică codificarea scripturilor SQL. ###spring.datasource.suspect-timeoutSpecifică timeout-ul înainte de a imprima conexiunea abandonată. ###spring.datasource.test-on-loanCând împrumutați o conexiune dintr-un pool de conexiuni, dacă să testați conexiunea. ###spring.datasource.test-on-connect este creat, dacă se testează conexiunea ###spring.datasource.test-on-returnIndiferent dacă conexiunea este returnată în pool-ul de conexiuni. ###spring.datasource.test-while-idleFie să se efectueze un test de conexiune când conexiunea este inactivă. ###spring.datasource.time-between-eviction-runs-millis Specifică intervalul de timp de funcționare între verificările conexiunii inactive, curățarea conexiunii abandonate și dimensiunea pool-ului de conexiuni inactive ###spring.datasource.transaction-isolation specifică nivelul de izolare a tranzacțiilor, care este specificat atunci când se folosește pool-ul de conexiuni Hikari ###spring.datasource.url specifică URL-ul JDBC. ###spring.datasource.use-disposable-connection-façade înfășoară conexiunea pentru a preveni utilizarea acesteia după ce este închisă. ###spring.datasource.use-este egal dacă să folosești String.equals() pentru a înlocui ==. ###spring.datasource.use-lock este blocat pe operațiunea de conexiune ###spring.datasource.usernameSpecifică numele bazei de date. ###spring.datasource.validation-interval specifică câți ms trebuie efectuat o verificare a conexiunii. ###spring.datasource.validation-query specifică instrucțiunea SQL de interogare pentru validarea conexiunii atunci când se obține o conexiune. ###spring.datasource.validation-query-timeout Specifică timpul de timeout pentru interogarea de validare a conexiunii. ###spring.datasource.validation-timeout Setează timpul de timeout pentru validarea conexiunii, care este specificat atunci când se folosește pool-ul de conexiuni Hikari ###spring.datasource.validator-class-name: Calificatorul complet al validatorului folosit pentru a testa interogarea. ###spring.datasource.xa.data-source-class-name Specifică calificatorul complet al sursei de date. ###spring.datasource.xa.properties specifică proprietățile transmise sursei de date 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-activ=20 spring.datasource.max-inactiv=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring Informații de configurare JPA ###spring.jpa.database specifică baza de date țintă. ###spring.jps.show-sq: Dacă să afișeze instrucțiunile SQL ###spring.jpa.hibernate.ddl-auto specifică modul DDL (none, validate, update, create, create-drop). Când se folosește o bază de date încorporată, implicit este create-drop, altfel nu este niciunul. ###spring.jpa.hibernate.naming-strategySpecifică politica de denumire. ###其他: ###spring.jpa.database-platformSpecifică tipul de bază de date țintă. ###spring.jpa.generate-ddl dacă se inițializează schema la pornire, implicit este fals ###spring.jpa.hibernate.ddl-auto specifică modul DDL (none, validate, update, create, create-drop). Când se folosește o bază de date încorporată, implicit este create-drop, altfel nu este niciunul. ###spring.jpa.hibernate.naming-strategySpecifică politica de denumire. ###spring.jpa.open-in-view înregistrează OpenEntityManagerInViewInterceptor și leagă JPA EntityManager de firul de solicitare, implicit este adevărat ###spring.jpa.properties adaugă atribute suplimentare furnizorului JPA. ###spring.jpa.show-sql Dacă activarea jurnalului SQL este setată implicit ca fals ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.nume-strategie = org.hibernate.cfg.ÎmbunătățitStrategieDenumire spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Întreaga structură a pachetului
Configurarea sursei de date:
Clasa entității:
Interfața de operare a bazei de date:
Interfața de operare a bazei de date moștenește de la clasa generică JpaRepository, iar când o moșteneștește, dobândește puterea divină pe care o conferă dezvoltatorilor:
Putem chema direct aceste metode pentru a efectua operațiuni de bază de date și putem personaliza HQL pentru a completa alte operații care se potrivesc personalității noastre, cum ar fi:
În acest cod, prin @Query comentariu,A finalizat redactarea HQLunde ":name" este consistent cu parametrul din adnotarea @Param de mai jos.
Notă: Numele tabelului în HQL ar trebui să fie numele clasei hărții ORM, iar HQL are unele diferențe față de instrucțiunile SQL tradiționale, cum ar fi sensul "*" diferit etc.
Dacă nu ești obișnuit să folosești HQL, poți folosi și instrucțiuni SQL:
Metoda de mai sus este încă eficientă atunci când este executată.nativeQuery to true înseamnă folosirea limbajului SQL。
Clasa controlerului:
Începe proiectul
Hibernate va mapa automat clasele entităților în baza de date pentru a crea tabele relevante pentru noi și va potrivi automat tabelele bazei de date pe baza unor adnotări precum @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO) etc. Economisește multă muncă de tabulare.
(Înainte de a începe proiectul, trebuie mai întâi să construiești baza de date, iar tabelul va fi creat automat)
hibernate_sequence tabelul este o strategie de generare a identificării @GeneratedValue adnotată, GenerationType.AUTO reprezintă generarea automată, cu condiția ca atributul id să fie un atribut int sau long type; dacă este un id de tip String, adăugarea acestei adnotări peste id va raporta imediat o eroare. Prin urmare, dacă este pentru id-ul tipului String, nu este nevoie să adnotezi id-ul cu @GeneratedValue (strategy = GenerationType.AUTO).
Solicită un test
Completează cererea de date și salvarea datelor prin get și post, respectiv.
InvocaAutentificarea cu hyperlink este vizibilă.Interfața POST solicită adăugarea de date, așa cum este arătat în figura următoare:
Interogarea bazei de date este următoarea:
Obține datele prin următoarea interfață:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Notă: Așa cum a cerut interfața de mai sus, Java este foarte sensibil la sensibilitatea la majuscule, fie că este vorba de adresa URL sau de parametri, trebuie să fie sensibil la majuscule! Dacă o literă este mare sau mică, cererea nu va ajunge la interfață sau parametrul va fi gol!
Druidul monitorizează următoarele situații:
În final, atașează codul sursă:
Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde
(Sfârșit)
|
Precedent:Eșecul de a configura un DataSourceUrmător:Ceaiul de după-amiază Jieyou | Miercuri, 20 februarie 2019
|