Es arī esmu puscepts Java, un es neesmu ļoti pazīstams ar pavasara ģimenes spaini, un es esmu izveidojis projekta ietvaru, pamatojoties uz tiešsaistes apmācībām un savu pieredzi.
Projekta vide:JDK versija: 1.8.0_171, mysql versija: 5.7.17, pavasara sāknēšana: 2.1.1.RELEASE, izstrādes rīki: idea.
Hibernācija un JPA
Šajā rakstā aprakstītais tīmekļa projekts izmanto hibernāciju kā noturības slāņa struktūru. Pavasara zābakā mums ir jāsaprot cits jēdziens: JPA
Iepriekšējais teikums var būt neskaidrs, bet tas nenozīmē, ka JPA ir jēdziens Spring Boot. Tā vietā tas ir Java Persistence API, kas ķīniešu valodā tiek tulkots kā: Java Persistence Layer API.
JPA ir standarta specifikācija, kuras pamatā ir ORM (vai O/R kartēšana), kurā JPA definē tikai standarta noteikumus un nenodrošina ieviešanu.
Šobrīd galvenās JPA ieviešanas ir Hibernate, EclipseLink, OpenJPA utt.
Sakarā ar Hibernate dominējošo stāvokli datu piekļuves izšķirtspējas tehnoloģijas jomā, JPA standartā pamatā dominē Hibernate.
SpringBoot ir automātiska šautene
Spring Data JPA tiek nodrošināts kā interfeisa rīks izstrādātājiem, lai lietotu hibernācijas sistēmu. Mūsu Spring Boot nodrošina pilnībā automatizētu "automātisko atkarības moduli": spring-boot-starter-data-jpa
POM atkarības struktūra:
Vai kādam ir jautājumi par pom failu bez citāta hibernācijai?
Iemesls ir tāds, ka, kā parādīts iepriekš redzamajā attēlā, spring-boot-starter-data-jpa ir atkarīgs no hibernate-core, un, atsaucoties uz spring-boot-starter-data-jpa, maven projekts automātiski ieviesīs pakotni, no kuras tas ir atkarīgs.
application.yml profils:
Pavasara konfigurācijas datu avota informācijas oficiālā saite:Hipersaites pieteikšanās ir redzama.
########################################## ###datasource - Norādiet mysql datu bāzes savienojuma informāciju ###spring.datasource.url: MySQL adrese ###spring.datasource.user: Datu bāzes lietotājvārds ###spring.datasource.password: datu bāzes parole ###spring.datasource.driverClassName: atbilst datu bāzes draiverim ###spring.datasource.max-active: norāda maksimālo aktīvo savienojumu skaitu savienojumu pūlā ###spring.datasource.max-idle: norāda maksimālo brīvo savienojumu skaitu savienojumu pūlā. ###spring.datasource.min-idle: norāda minimālo vērtību, kas jāuztur (DBCP un Tomcat savienojumu baseiniem) ###spring.datasource.initial-size: norāda sākotnēji izveidoto savienojumu skaitu, startējot savienojumu pūlu ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled neatkarīgi no tā, vai PersistenceExceptionTranslationPostProcessor ir iespējots, noklusējums ir true ###spring.datasource.abandon-when-percentage-fulliestata to pamesto savienojumu procentuālo daļu, kas tiek slēgti vai par kuriem tiek ziņots, kad taimauts tiek pārtraukts ###spring.datasource.allow-pool-suspension Izmantojot Hikari baseinu, ir iestatīts, vai atļaut savienojuma pūla pauzi, uz false ###spring.datasource.alternate-username-allowedvai ir atļauti alternatīvi lietotājvārdi. ###spring.datasource.auto-commitNorāda, vai atjauninājumi tiek veikti automātiski. ###spring.datasource.catalog norāda noklusējuma katalogu. ###spring.datasource.commit-on-return iestata, vai veikt visas neizpildītās transakcijas, kad savienojums tiek atgriezts ###spring.datasource.connection-init-sql norāda, ka savienojums tiek izveidots un pievienots SQL, kas izpildīts pirms savienojuma pūla. ###spring.datasource.connection-init-sqls Izmantojot DBCP savienojuma pūlu, norādiet sql, kas jāizpilda inicializācijas laikā ###spring.datasource.connection-properties. [key]Norāda konfigurējamos atribūtus, izmantojot DBCP savienojuma pūlu ###spring.datasource.connection-test-query norāda SQL priekšrakstu, kas pārbauda savienojuma izpildes likumību ###spring.datasource.connection-timeoutNorāda savienojuma taimauta laiku milisekundēs. ###spring.datasource.continue-on-errorInicializējot datu bāzi, rodas kļūda turpināt vai nē, noklusējums ir false ###spring.datasource.data norāda datu (DML) skriptu ###spring.datasource.data-source-class-name Norāda pilnībā kvalificēto datu avota nosaukumu. ###spring.datasource.data-source-jndi norāda jndi adresi ###spring.datasource.data-source-properties. Izmantojot Hikari savienojumu pūlu, norādiet iestatāmos atribūtus ###spring.datasource.db-properties izmanto Tomcat savienojumu pūlu, norādot iestatāmos rekvizītus ###spring.datasource.default-auto-commit tiek automātiski izpildīts. ###spring.datasource.default-catalog norāda katalogu, kas izveido savienojumu ar noklusējuma. ###spring.datasource.default-read-onlyVai iestatīt noklusējuma savienojumu uz tikai lasāmu. ###spring.datasource.default-transaction-isolationNorāda noklusējuma izolācijas līmeni saistītajām transakcijām. ###spring.datasource.driver-class-name norāda draivera klases nosaukumu, kas pēc noklusējuma tiek automātiski noteikts no jdbc URL. ###spring.datasource.fair-queue Vai izmantot FIFO atgriešanās savienojumus. ###spring.datasource.health-check-properties. [key] Atribūts, kas nodots, izmantojot Hikari savienojuma pūlu sirdsdarbības pārbaudes laikā ###spring.datasource.idle-timeoutNorāda, cik ilgi savienojums netiek izmantots, kas pēc noklusējuma ir iestatīts kā dīkstāve ###spring.datasource.ignore-exception-on-pre-loadNeatkarīgi no tā, vai izņēmums tiek ignorēts, kad tiek inicializēts savienojuma pūls. ###spring.datasource.init-sqlsql, kas tiek izpildīts, kad tiek izveidots savienojums ###spring.datasource.initial-size norāda sākotnēji izveidoto savienojumu skaitu, startējot savienojumu pūlu ###spring.datasource.initialization-fail-fastVeidojot savienojuma pūlu, nav iespējams izveidot noteiktu minimālo savienojumu skaitu, lai izmestu izņēmumu ###spring.datasource.initializeNorādiet, vai inicializēt datu avotu, izmantojot data.sql, noklusējums: true ###spring.datasource.isolate-internal-queries norāda, vai iekšējie vaicājumi ir jāievieto karantīnā, pēc noklusējuma norādot uz false ###spring.datasource.jdbc-interceptors Izmantojot Tomcat savienojumu pūlu, norādiet jdbc pārtvērēju un semikolu atdalīšanu ###spring.datasource.jdbc-url norāda JDBC URL. ###spring.datasource.jmx-enabled ir iespējots pēc noklusējuma: false ###spring.datasource.jndi-nameNorāda jndi nosaukumu. ###spring.datasource.leak-detection-threshold Cik milisekundes jūs atklājat savienojuma noplūdi, izmantojot Hikari savienojuma pūlu? ###spring.datasource.log pamests izmanto DBCP savienojumu pūlu, lai izsekotu pamestos paziņojumus vai savienojumus, noklusējums ir false ###spring.datasource.log-validation-errorsIzmantojot Tomcat savienojuma pūlu, vai drukāt validācijas kļūdu. ###spring.datasource.login-timeoutNorāda taimauta laiku savienojuma izveidei ar datu bāzi. ###spring.datasource.max-age norāda maksimālo savienojumu vecumu savienojumu pūlā ###spring.datasource.max-lifetime norāda savienojumu maksimālo kalpošanas laiku savienojumu pūlā milisekundēs. ###spring.datasource.max-open-prepared-statementsnorāda maksimālo atvērto paziņojumu skaitu. ###spring.datasource.max-wait norāda maksimālo gaidīšanas laiku, lai savienojumu pūls gaidītu savienojuma atgriešanos milisekundēs. ###spring.datasource.maximum-pool-sizeNorāda maksimālo savienojumu skaitu savienojumu pūlā, ieskaitot aktīvos un dīkstāves savienojumus. ###spring.datasource.min-evictable-idle-time-millisNorāda bezmaksas savienojumu uz minimālo laiku, kad tas var būt dīkstāvē, pirms to var notīrīt. ###spring.datasource.min-idle norāda minimālo vērtību, kas jāsaglabā (DBCP un Tomcat savienojumu baseiniem) ###spring.datasource.minimum-idle norāda minimālo brīvo savienojumu skaitu, ko uztur savienojums, un, izmantojot HikariCP. ###spring.datasource.name Norādiet datu avota nosaukumu. ###spring.datasource.num-tests-per-eviction-run norāda objektu skaitu, palaižot katru dīkstāves objekta evitor pavedienu ###spring.datasource.passwordNorādiet datu bāzes paroli. ###spring.datasource.platform norāda shēmu izmantojamo platformu (schema-${platform}.sql, kuras noklusējuma vērtība ir: all ###spring.datasource.pool-nameNorāda savienojuma pūla nosaukumu. ###spring.datasource.pool-prepared-statementsNorāda, vai apvienot pārskatus. ###spring.datasource.propagate-interrupt-stateVai izplatīt pārtraukuma stāvokli, ja pavediens tiek pārtraukts, gaidot savienojumu. ###spring.datasource.read-onlyIzmantojot Hikari savienojuma pūlu, vai datu avotu atzīmēt kā tikai lasāmu ###spring.datasource.register-mbeans norāda, vai Hikari savienojuma pūls reģistrē JMX MBeans. ###spring.datasource.remove-abandoned norāda, vai dzēst savienojumu tūlīt pēc pamestā taimauta beigām. ###spring.datasource.remove-abandoned-timeoutNorāda laiku, kad savienojums ir jāpārtrauc. ###spring.datasource.rollback-on-returnVai atgriezt gaidāmo darījumu, atgriežot savienojumu. ###spring.datasource.schema norāda shēmas (DDL) skriptu. ###spring.datasource.separator norāda priekšraksta atdalītāju skripta inicializēšanai, noklusējums: ; ###spring.datasource.sql-script-encoding norāda SQL skriptu kodējumu. ###spring.datasource.suspect-timeoutNorāda taimautu pirms pārtrauktā savienojuma drukāšanas. ###spring.datasource.test-on-borrowAizņemoties savienojumu no savienojuma pūla, vai pārbaudīt savienojumu. ###spring.datasource.test-on-connect, vai pārbaudīt savienojumu ###spring.datasource.test-on-returnVai savienojums tiek atgriezts savienojumu pūlā. ###spring.datasource.test-while-idleVai veikt savienojuma pārbaudi, kad savienojums ir dīkstāvē. ###spring.datasource.time-between-eviction-runs-millis Norāda darbības laika intervālu starp dīkstāves savienojuma pārbaudēm, pamestā savienojuma tīrīšanu un dīkstāves savienojuma pūla lielumu ###spring.datasource.transaction-isolation norāda transakcijas izolācijas līmeni, kas tiek norādīts, izmantojot Hikari savienojumu pūlu ###spring.datasource.url norāda JDBC URL. ###spring.datasource.use-disposable-connection-façade iesaiņo savienojumu, lai to neizmantotu pēc tā aizvēršanas. ###spring.datasource.use-equals, vai izmantot String.equals(), lai aizstātu ==. ###spring.datasource.use-lock ir bloķēts savienojuma darbībā ###spring.datasource.usernameNorādiet datu bāzes nosaukumu. ###spring.datasource.validation-interval norāda, cik ms jāveic savienojuma pārbaude. ###spring.datasource.validation-query norāda SQL vaicājuma priekšrakstu savienojuma validācijai, iegūstot savienojumu. ###spring.datasource.validation-query-timeoutNorāda savienojuma validācijas vaicājuma taimauta laiku. ###spring.datasource.validation-timeoutIestata savienojuma validācijas taimauta laiku, kas tiek norādīts, izmantojot Hikari savienojuma pūlu ###spring.datasource.validator-class-name Validatora pilns ierobežotājs, kas tiek izmantots, lai pārbaudītu vaicājumu. ###spring.datasource.xa.data-source-class-name Norāda pilnu datu avota apzīmētāju. ###spring.datasource.xa.properties norāda rekvizītus, kas nodoti XA datu avotam ###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=sakne spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.max-aktīvs=20 spring.datasource.max-dīkstāve=8 spring.datasource.min-idle=8 pavasaris.datu avots.sākotnējais-lielums=10 ########################################## ##SPring JPA konfigurācijas informācija ###spring.jpa.database norāda mērķa datu bāzi. ###spring.jps.show-sq: Vai parādīt SQL paziņojumus ###spring.jpa.hibernate.ddl-auto norāda DDL režīmu (none, validate, update, create, create-drop). Izmantojot iegultu datu bāzi, noklusējums ir create-drop, pretējā gadījumā tas nav. ###spring.jpa.hibernate.naming-strategyNorādiet nosaukumu piešķiršanas politiku. ###其他: ###spring.jpa.database-platformNorāda mērķa datu bāzes tipu. ###spring.jpa.generate-ddl vai inicializēt shēmu startēšanas laikā, noklusējuma vērtība ir false ###spring.jpa.hibernate.ddl-auto norāda DDL režīmu (none, validate, update, create, create-drop). Izmantojot iegultu datu bāzi, noklusējums ir create-drop, pretējā gadījumā tas nav. ###spring.jpa.hibernate.naming-strategyNorādiet nosaukumu piešķiršanas politiku. ###spring.jpa.open-in-view reģistrē OpenEntityManagerInViewInterceptor un saista JPA EntityManager ar pieprasījuma pavedienu, noklusējums ir true ###spring.jpa.properties JPA nodrošinātājam pievieno papildu atribūtus. ###spring.jpa.show-sql Vai iespējot SQL žurnālu pēc noklusējuma ir iestatīts uz false ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = atjaunināt spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.BetterNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Visa paketes struktūra
Datu avota konfigurācija:
Vienības klase:
Datu bāzes darbības interfeiss:
Datu bāzes darbības interfeiss manto no JpaRepository vispārējās klases, un, kad tas to pārmanto, tas iegūst dievišķo spēku, ko tas piešķir izstrādātājiem:
Mēs varam tieši izsaukt šīs metodes, lai veiktu datu bāzes operācijas, un mēs varam arī pielāgot HQL, lai pabeigtu citas darbības, kas atbilst mūsu personībai, piemēram:
Šajā kodā, izmantojot @Query komentāru,Pabeigta HQL rakstīšanakur ":name" atbilst parametram zemāk esošajā @Param anotācijā.
Piezīme: HQL tabulas nosaukumam jābūt ORM kartes klases nosaukumam, un HQL ir dažas atšķirības no tradicionālajiem SQL apgalvojumiem, piemēram, "*" nozīme ir atšķirīga utt.
Ja neesat pieradis izmantot HQL, varat izmantot arī SQL paziņojumus:
Iepriekš minētā metode joprojām ir efektīva, kad tā tiek veikta.nativeQuery uz true nozīmē SQL valodas izmantošanu。
Kontroliera klase:
Sāciet projektu
Hibernate automātiski kartēs entītiju klases uz datu bāzi, lai izveidotu mums atbilstošas datu bāzes tabulas, un tas automātiski saskaņos datu bāzes tabulas, pamatojoties uz tādām anotācijām kā @Table, @Column, @Id, @GeneratedValue (stratēģija = GenerationType.AUTO) utt. Ietaupiet daudz tabulas darba.
(Pirms projekta uzsākšanas vispirms jāizveido datu bāze, un tabula tiks automātiski izveidota)
hibernate_sequence tabula ir id ģenerēšanas stratēģija @GeneratedValue anotācijām, GenerationType.AUTO pārstāv automātisku ģenerēšanu, ar nosacījumu, ka id atribūtam jābūt int vai garam tipa atribūtam, ja tas ir virknes tipa id, tad pievienojot šo anotāciju virs id, nekavējoties tiks ziņots par kļūdu. Tāpēc, ja tas ir virknes tipa ID, jums nav nepieciešams anotēt id ar @GeneratedValue (stratēģija = GenerationType.AUTO).
Pieprasīt testu
Pilnīgs datu pieprasījums un datu saglabāšana, izmantojot attiecīgi get un post.
IzmantotHipersaites pieteikšanās ir redzama.Interfeiss POST pieprasa pievienot datus, kā parādīts šajā attēlā:
Datu bāzes vaicājums ir šāds:
Iegūstiet datus, izmantojot šādu interfeisu:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Piezīmes: Kā to pieprasa iepriekš minētais interfeiss, Java ir ļoti jutīga pret reģistrjutīgumu, neatkarīgi no tā, vai tā ir URL adrese vai parametri, tai jābūt reģistrjutīgai! Ja burts ir lielais vai mazais burts, pieprasījums nesasniegs saskarni vai parametrs būs tukšs!
Druīds uzrauga šādas situācijas:
Visbeidzot, pievienojiet avota kodu:
Tūristi, ja vēlaties redzēt šīs ziņas slēpto saturu, lūdzu Atbildi
(Beigas)
|