Já jsem také polovičatý v Javě a nejsem moc obeznámený s rodinným bucketem na jaru, a vytvořil jsem projektový framework založený na online tutoriálech a některých vlastních zkušenostech.
Projektové prostředí:Verze jdK: 1.8.0_171, verze MySQL: 5.7.17, Spring Boot: 2.1.1.RELEASE, vývojové nástroje: idea.
Hibernace a JPA
Webový projekt v tomto článku používá Hibernate jako rámec pro perzistenční vrstvu. Ve Spring Boot musíme pochopit další koncept: JPA
Předchozí věta může být nejednoznačná, ale neznamená, že JPA je koncept ve Spring Boot. Místo toho je to Java Persistence API, které je do čínštiny přeloženo jako: Java Persistence Layer API.
JPA je standardní specifikace založená na ORM (nebo mapování O/R), ve které JPA definuje pouze standardní pravidla a neposkytuje implementaci.
V současnosti jsou hlavními implementacemi JPA Hibernate, EclipseLink, OpenJPA a dalšími.
Díky dominanci Hibernate v oblasti technologie řešení přístupu k datům je standard JPA v podstatě dominován Hibernate.
SpringBoot je automatická puška
Spring Data JPA je poskytován jako nástroj pro vývojáře pro aplikaci rámce Hibernate. Náš Spring Boot poskytuje plně automatizovaný "automatický dependenční modul": spring-boot-starter-data-jpa
Struktura závislosti POM:
Má někdo otázky ohledně souboru pom bez citace pro hibernate?
Důvodem je, že jak je ukázáno na obrázku výše, spring-boot-starter-data-jpa závisí na hibernate-core, a při odkazování na spring-boot-starter-data-jpa projekt maven automaticky představí balíček, na kterém závisí.
application.yml Profil:
Oficiální odkaz na informace o zdroji dat pro konfiguraci Spring:Přihlášení k hypertextovému odkazu je viditelné.
########################################## ###datasource - Specifikujte informace o připojení do databáze mysql ###spring.datasource.url: MySQL adresa ###spring.datasource.user: Uživatelské jméno databáze ###spring.datasource.password: Heslo k databázi ###spring.datasource.driverClassName: Odpovídající ovladači databáze ###spring.datasource.max-aktivní: Specifikuje maximální počet aktivních spojení v poolu spojení ###spring.datasource.max-nečinný: Určuje maximální počet volných spojení v poolu spojů. ###spring.datasource.min-idle: Specifikuje minimální hodnotu, kterou je třeba udržovat (pro DBCP a Tomcat pooly připojení) ###spring.datasource.initial-size: Specifikuje počet spojení původně navázaných při spuštění poolu spojení ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled bez ohledu na to, zda je povolen PersistenceExceptionTranslationPostProcessor, výchozí je pravda ###spring.datasource.abandon-when-percentage-fullsets procento opuštěných připojení, která jsou uzavřena nebo hlášena, když je timeout opuštěn ###spring.datasource.allow-pool-suspension Při použití Hikari poolu je nastavení na false (nepravdivé), zda povolit pauzu spojovacího poolu ###spring.datasource.alternate-username-allowedi jsou povolena alternativní uživatelská jména. ###spring.datasource.auto-commitSpecifikuje, zda jsou aktualizace automaticky commitovány. ###spring.datasource.catalog specifikuje výchozí katalog. ###spring.datasource.commit-on-return určuje, zda potvrdí všechny nevyřízené transakce při návratu spojení ###spring.datasource.connection-init-sql specifikuje, že spojení je vytvořeno a přidáno do SQL provedeného před poolem spojení. ###spring.datasource.connection-init-sqls Při použití DBCP connection poolu určete sql, které má být vykonáno při inicializaci ###spring.datasource.connection-properties. [key]Specifikuje atributy, které mají být konfigurovány při použití DBCP connection poolu ###spring.datasource.connection-test-query specifikuje SQL příkaz, který ověřuje legitimitu provedení spojení ###spring.datasource.connection-timeoutSpecifikuje čas vypršení spojení v milisekundách. ###spring.datasource.continue-on-errorPři inicializaci databáze při chybě, zda pokračovat, je výchozí hodnota nepravdivá ###spring.datasource.data specifikuje Data (DML) skript ###spring.datasource.data-source-class-name Specifikuje plně kvalifikovaný název datového zdroje. ###spring.datasource.data-source-jndi specifikuje adresu jndi ###spring.datasource.data-source-properties. Při použití Hikari connection poolu určete atributy, které mají být nastaveny ###spring.datasource.db-vlastnosti používají Tomcatův pool spojení, určující vlastnosti, které mají být nastaveny ###spring.datasource.default-auto-commit je automaticky commitován. ###spring.datasource.default-catalog specifikuje katalog, který se připojuje k výchozímu nastavení. ###spring.datasource.default-read-onlyZda nastavit výchozí připojení na pouze pro čtení. ###spring.datasource.default-transaction-isolationSpecifikuje výchozí úroveň izolace pro propojené transakce. ###spring.datasource.driver-class-name specifikuje název třídy ovladače, který je automaticky detekován z URL jdbc ve výchozím nastavení. ###spring.datasource.fair-queue Zda použít zpětná spojení FIFO. ###spring.datasource.health-check-properties. [klíč] Atribut předán při použití Hikari connection poolu během kontroly srdce ###spring.datasource.idle-timeoutSpecifikuje, jak dlouho není spojení používáno, což je ve výchozím nastavení nastaveno na nečinný stav ###spring.datasource.ignore-exception-on-pre-loadZda je výjimka ignorována při inicializaci poolu spojení. ###spring.datasource.init-sqlsql, který se spustí při vytvoření spojení ###spring.datasource.initial-size určuje počet spojení původně navázaných při spuštění poolu spojení ###spring.datasource.initialization-fail-fast Při vytváření poolu spojení není možné vytvořit stanovený minimální počet spojení pro vyvolání výjimky ###spring.datasource.initializeSpecifikovat, zda inicializovat datový zdroj pomocí data.sql, výchozí: true ###spring.datasource.isolate-internal-queries určuje, zda mají být interní dotazy v karanténě, přičemž výchozí nastavení je false ###spring.datasource.jdbc-interceptors Při použití Tomcat connection poolu specifikujte jdbc interceptor a středník ###spring.datasource.jdbc-url specifikuje JDBC URL. ###spring.datasource.jmx-enabled je ve výchozím nastavení povoleno: false ###spring.datasource.jndi-nameSpecifikuje název jndi. ###spring.datasource.leak-detection-threshold Kolik milisekund detekuje únik připojení při použití Hikari connection poolu? ###spring.datasource.log-abandoned používá DBCP connection pool ke sledování opuštěných příkazů nebo spojení, výchozí je false ###spring.datasource.log-validation-errorPři použití Tomcat connection poolu, zda vytisknout validační chybu. ###spring.datasource.login-timeoutSpecifikuje čas vypršení pro připojení k databázi. ###spring.datasource.max-věk určuje maximální stáří spojení v poolu spojení ###spring.datasource.max životnost určuje maximální životnost spojení v poolu spojení, v milisekundách. ###spring.datasource.max-open-prepared-statementurčuje maximální počet připravených prohlášení, která jsou otevřena. ###spring.datasource.max-wait určuje maximální dobu čekání, kdy může skupina spojů čekat na návrat, v milisekundách. ###spring.datasource.maximum-pool-sizeSpecifikuje maximální počet spojení v poolu spojů, včetně aktivních a nečinných spojení. ###spring.datasource.min-evictable-idle-time-millisSpecifikuje volné spojení po minimální dobu, po kterou může být nečinné, než může být vymazáno. ###spring.datasource.min-idle specifikuje minimální hodnotu, kterou je třeba udržovat (pro DBCP a Tomcat pooly připojení) ###spring.datasource.minimum-idle určuje minimální počet volných spojení udržovaných spojením, a to při použití HikariCP. ###spring.datasource.name Uveďte název zdroje dat. ###spring.datasource.num-tests-per-eviction-run určuje počet objektů při spuštění každého vlákna evitor nečinných objektů ###spring.datasource.passwordZadejte heslo k databázi. ###spring.datasource.platform specifikuje Platformu (schema-${platform}.sql pro schéma, která výchozí je: all ###spring.datasource.pool-nameSpecifikuje název poolu spojení. ###spring.datasource.pool-prepared-statementsSpecifikuje, zda mají být příkazy sloučeny. ###spring.datasource.propagate-interrupt-stateZda propagovat stav přerušení, pokud je vlákno přerušeno během čekání na spojení. ###spring.datasource.read-only Při použití Hikari connection poolu, zda označit datový zdroj jako pouze pro čtení ###spring.datasource.register-mbeans specifikuje, zda Hikari connection pool registruje JMX MBeans. ###spring.datasource.remove-abandoned určuje, zda má spojení smazat ihned po opuštěném timeoutu. ###spring.datasource.remove-abandoned-timeoutSpecifikuje čas, kdy by mělo být spojení opuštěno. ###spring.datasource.rollback-on-returnZda vrátit čekající transakci při návratu spojení. ###spring.datasource.schema specifikuje skript Schema (DDL). ###spring.datasource.separator specifikuje oddělovač příkazů pro inicializaci skriptu, výchozí: ; ###spring.datasource.sql-skriptové kódování specifikuje kódování SQL skriptů. ###spring.datasource.suspect-timeoutSpecifikuje timeout před vytištěním opuštěného připojení. ###spring.datasource.test-on-borrowPři půjčování spojení z poolu spojů, zda ho otestovat. ###spring.datasource.test-on-connect je vytvořen, zda má připojení otestovat ###spring.datasource.test-on-returnZda je spojení vráceno do poolu spojení. ###spring.datasource.test-while-idleZda provést test připojení, když je spojení nečinné. ###spring.datasource.time-interween-eviction-runs-millis Specifikuje interval provozu mezi kontrolami nečinných spojení, čištěním opuštěného spojení a velikostí nečinného spojovacího poolu ###spring.datasource.transaction-isolation specifikuje úroveň transakční izolace, která je specifikována při použití Hikari connection poolu ###spring.datasource.url specifikuje URL JDBC. ###spring.datasource.use-disposable-connection-façade obaluje spojení, aby zabránilo jeho použití po jeho uzavření. ###spring.datasource.use-equals zda použít String.equals() jako náhradu ==. ###spring.datasource.use-lock je uzamčen na operaci spojení ###spring.datasource.usernameZadejte název databáze. ###spring.datasource.validation-interval specifikuje, o kolik ms má být provedena kontrola spojení. ###spring.datasource.validation-query specifikuje SQL dotazovací příkaz pro validaci spojení při získávání spojení. ###spring.datasource.validation-query-timeoutSpecifikuje čas vypršení pro dotaz na ověření spojení. ###spring.datasource.validation-timeoutNastavuje čas vypršení pro validaci spojení, který je specifikován při použití Hikari connection poolu ###spring.datasource.validator-class-name Plný kvalifikátor validátoru použitý k testování dotazu. ###spring.datasource.xa.data-source-class-name Specifikuje úplný kvalifikátor datového zdroje. ###spring.datasource.xa.properties specifikuje vlastnosti předané zdroji dat 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-active=20 spring.datasource.max-nečinný=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring Informace o konfiguraci JPA ###spring.jpa.database specifikuje cílovou databázi. ###spring.jps.show-sq: Zda zobrazit SQL příkazy ###spring.jpa.hibernate.ddl-auto specifikuje DDL režim (žádný, validovat, aktualizovat, vytvářet, vytvářet-upouštět). Při použití vestavěné databáze je výchozí nastavení create-drop, jinak žádné. ###spring.jpa.hibernate.naming-strategySpecifikujte politiku pojmenování. ###其他: ###spring.jpa.database-platformSpecifikuje typ cílové databáze. ###spring.jpa.generate-ddl zda inicializovat schéma při startu, výchozí je false ###spring.jpa.hibernate.ddl-auto specifikuje DDL režim (žádný, validovat, aktualizovat, vytvářet, vytvářet-upouštět). Při použití vestavěné databáze je výchozí nastavení create-drop, jinak žádné. ###spring.jpa.hibernate.naming-strategySpecifikujte politiku pojmenování. ###spring.jpa.open-in-view registruje OpenEntityManagerInViewInterceptor a váže JPA EntityManager na vlákno požadavků, výchozí je pravda ###spring.jpa.properties přidává další atributy k poskytovateli JPA. ###spring.jpa.show-sql Zda povolit SQL log je ve výchozím nastavení nastaveno na false ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Celá struktura balíčku
Konfigurace datového zdroje:
Třída entit:
Rozhraní pro provoz databáze:
Rozhraní pro operace databáze dědí generickou třídu JpaRepository a když ji zdědí, získává božskou moc, kterou dává vývojářům:
Tyto metody můžeme přímo volat pro provádění databázových operací a také můžeme upravit HQL tak, aby dokončil další operace, které odpovídají naší osobnosti, například:
V tomto kódu, @Query komentáři,Dokončení psaní HQLkde ":name" je konzistentní s parametrem v @Param anotaci níže.
Poznámka: Název tabulky v HQL by měl být název třídy mapy ORM a HQL se od tradičních SQL příkazů liší od některých prvků, například význam "*" je odlišný atd.
Pokud nejste zvyklí používat HQL, můžete také použít SQL příkazy:
Výše uvedená metoda je stále účinná, když je provedena.nativeQuery to true znamená pomocí SQL jazyka。
Třída ovladače:
Začněte projekt
Hibernate automaticky namapuje třídy entit do databáze, aby pro nás vytvořil relevantní databázové tabulky, a automaticky přiřadí databázové tabulky na základě anotací jako @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO) atd. Ušetříte spoustu práce s tabulací.
(Před zahájením projektu je potřeba nejdříve vytvořit databázi a tabulka se automaticky vytvoří)
hibernate_sequence tabulka je strategie generování id @GeneratedValue anotovaná, GenerationType.AUTO představuje automatickou generaci, pokud musí být atribut id int nebo long type; pokud je id typu řetězce, přidání této anotace nad id okamžitě nahlásí chybu. Pokud tedy jde o id typu řetězce, není nutné id anotovat @GeneratedValue (strategy = GenerationType.AUTO).
Požádejte o test
Kompletní žádost o data a ukládání dat přes get a post.
vyvolatPřihlášení k hypertextovému odkazu je viditelné.Rozhraní POST žádá o přidání dat, jak je znázorněno na následujícím obrázku:
Dotaz do databáze je následující:
Získejte data přes následující rozhraní:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Poznámka: Jak požaduje výše uvedené rozhraní, Java je velmi citlivá na citlivost na velká písmena, ať už jde o URL adresu nebo parametry, musí být citlivá na velká písmena! Pokud je písmeno velké nebo malé, způsobí to, že požadavek nedorazí na rozhraní, nebo parametr zůstane prázdný!
Druid sleduje následující situace:
Nakonec přiložte zdrojový kód:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď
(Konec)
|