|
|
Публикувано в 20.02.2019 г. 14:44:57 ч.
|
|
|
|

Също така съм недовършен с Java и не съм много запознат с Spring Family Bucket, а съм създал проектна рамка, базирана на онлайн уроци и част от собствения си опит.
Среда на проекта:JDK версия: 1.8.0_171, MySQL версия: 5.7.17, spring boot: 2.1.1.RELEASE, инструменти за разработка: idea.
Хибернация и JPA
Уеб проектът в тази статия използва Hibernate като рамка за слой за устойчивост. В Spring Boot трябва да разберем друга концепция: JPA
Предишното изречение може да е двусмислено, но това не означава, че JPA е концепция в Spring Boot. Вместо това, това е Java Persistence API, което се превежда на китайски като: Java Persistence Layer API.
JPA е стандартна спецификация, базирана на ORM (или O/R картографиране), при която JPA дефинира само стандартни правила и не предоставя реализация.
В момента основните реализации на JPA са Hibernate, EclipseLink, OpenJPA и др.
Поради доминацията на Hibernate в областта на технологиите за разрешаване на достъпа до данни, стандартът JPA е основно доминиран от Hibernate.
SpringBoot е автоматична пушка
Spring Data JPA се предоставя като интерфейсен инструмент за разработчиците да прилагат рамката Hibernate. Нашият Spring Boot предоставя напълно автоматизиран "модул за автоматични зависимости": spring-boot-starter-data-jpa
Структура на зависимостта на POM:
Някой има ли въпроси относно pom файла без цитат за хибернация?
Причината е, че както е показано на горната фигура, spring-boot-starter-data-jpa зависи от Hibernate-core, а при препратка към spring-boot-starter-data-jpa, проектът Maven автоматично въвежда пакета, от който зависи.
application.yml профил:
Официална информация за източника на данни за конфигурацията на пружината:Входът към хиперлинк е видим.
########################################## ###datasource - Уточнете информацията за връзката към MySQL базата данни ###spring.datasource.url: MySQL адрес ###spring.datasource.user: Потребителско име на база данни ###spring.datasource.password: Паролата за базата данни ###spring.datasource.driverClassName: Съответстващ на драйвера на базата данни ###spring.datasource.max-активен: Определя максималния брой активни връзки в пула за връзки ###spring.datasource.max-iddle: Определя максималния брой свободни връзки в пула от връзки. ###spring.datasource.min-idle: Определя минималната стойност, която трябва да се поддържа (за DBCP и Tomcat пулове на връзката) ###spring.datasource.initial-size: Определя броя на връзките, първоначално установени при стартиране на пула на връзките ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled независимо дали PersistenceExceptionTranslationPostProcessor е активиран, по подразбиране е вярно ###spring.datasource.abandon-when-percentage-fullsets – процентът на изоставените връзки, които са затворени или докладвани, когато таймаутът е прекратен ###spring.datasource.allow-pool-suspension При използване на Hikari pool, дали да се позволи паузиране на пула за връзки се задава на false ###spring.datasource.alternate-username-allowedдали алтернативни потребителски имена са позволени. ###spring.datasource.auto-commitУточнява дали актуализациите се правят автоматично. ###spring.datasource.catalog определя стандартния каталог. ###spring.datasource.commit-on-return задава дали да се комитират всички неизпълнени транзакции при връщане на връзката ###spring.datasource.connection-init-sql уточнява, че връзката се създава и добавя към sql-а, изпълнена преди пула на връзката. ###spring.datasource.connection-init-sqls При използване на DBCP пула за връзки, задайте sql, който трябва да се изпълнява при инициализация ###spring.datasource.connection-properties. [ключ]Определя атрибутите, които трябва да се конфигурират при използване на DBCP пула за връзки ###spring.datasource.connection-test-query определя SQL оператора, който проверява легитимността на изпълнението на връзката ###spring.datasource.connection-timeoutОпределя времето за тайм-аут за връзката, в милисекунди. ###spring.datasource.continue-on-errorПри инициализация на базата данни и срещане на грешка дали да продължи или не, по подразбиране е невярно ###spring.datasource.data специфицира скрипта Data (DML) ###spring.datasource.data-source-class-name Определя напълно квалифицираното име на източника на данни. ###spring.datasource.data-source-jndi посочва адреса на JNDI ###spring.datasource.data-source-properties. Когато използвате Hikari пула за връзки, задайте атрибутите, които трябва да се зададат ###spring.datasource.db-свойства използва пула за връзки Tomcat, като определя свойствата, които трябва да се зададат ###spring.datasource.default-auto-commit се прави автоматично. ###spring.datasource.default-catalog определя каталога, който се свързва с подразбирането. ###spring.datasource.default-read-onlyДали да се настрои по подразбиране връзката само за четене. ###spring.datasource.default-transaction-isolationОпределя нивото на изолация по подразбиране за свързани транзакции. ###spring.datasource.driver-class-name определя името на класа на драйвера, което по подразбиране се открива автоматично от jdbc URL адреса. ###spring.datasource.fair-queue Дали да се използват FIFO връщащи връзки. ###spring.datasource.health-check-properties. [ключ] Атрибутът е предаден при използване на пула за връзки Hikari по време на проверка на сърдечния ритъм ###spring.datasource.idle-timeoutОпределя колко дълго връзката не се използва, като по подразбиране е настроена на неактивна ###spring.datasource.ignore-exception-on-pre-loadДали изключението се игнорира при инициализация на пула на връзката. ###spring.datasource.init-sqlsql, който се изпълнява при създаване на връзка ###spring.datasource.initial-size определя броя на връзките, първоначално установени при стартиране на пула на връзките ###spring.datasource.initialization-fail-fastПри създаване на пул за връзки не е възможно да се създаде определен минимален брой връзки за хвърляне на изключение ###spring.datasource.initializeПосочете дали да инициализирате източника на данни с data.sql, по подразбиране: true ###spring.datasource.isolate-internal-queries определя дали вътрешните заявки трябва да бъдат поставени под карантина, като по подразбиране става false ###spring.datasource.jdbc-interceptors при използване на пула за връзки на Tomcat, посочете разделянето на jdbc interceptor и точката и запетая ###spring.datasource.jdbc-url определя URL адреса на JDBC. ###spring.datasource.jmx-enabled е активиран по подразбиране: false ###spring.datasource.jndi-nameУточнява името на jndi. ###spring.datasource.leak-detection-threshold Колко милисекунди засичате теч на връзка, когато използвате пула за връзки на Hikari? ###spring.datasource.log-abandoned използва DBCP пула за връзки за проследяване на изоставени оператори или връзки, като по подразбиране е невярно ###spring.datasource.log-валидация-грешкиКогато използвате Tomcat пул за връзка, дали да се отпечата валидационна грешка. ###spring.datasource.login-timeoutОпределя времето за свързване с базата данни. ###spring.datasource.max-възраст определя максималната възраст на връзките в пула за връзки ###spring.datasource.max-живот определя максималния живот на връзките в пула на връзките, в милисекунди. ###spring.datasource.max-open-prepared-statements определя максималния брой готови изказвания, които се отварят. ###spring.datasource.max-wait определя максималното време за изчакване на пула за връщане на връзката, в милисекунди. ###spring.datasource.maximum-pool-sizeОпределя максималния брой връзки в пула на връзките, включително активни и неактивни връзки. ###spring.datasource.min-evictable-idle-time-millisОпределя свободна връзка за минималното време, през което може да бъде в покой, преди да бъде изчистена. ###spring.datasource.min-idle определя минималната стойност, която трябва да се поддържа (за DBCP и Tomcat пулове за връзка) ###spring.datasource.minimum-idle определя минималния брой свободни връзки, поддържани от една връзка, и при използване на HikariCP. ###spring.datasource.name Уточнете името на източника на данни. ###spring.datasource.num-tests-per-eviction-run определя броя на обектите при изпълнение на всяка неактивна нишка на evitor ###spring.datasource.passwordПосочи паролата за базата данни. ###spring.datasource.platform определя платформата (schema-${platform}.sql за използване за схемата, която по подразбиране се определя на: всички ###spring.datasource.pool-nameСпецифицира името на пула за връзки. ###spring.datasource.pool-prepared-statementsУточнява дали да се обединяват оператори. ###spring.datasource.propagate-interrupt-stateДали да се разпространява състоянието на прекъсване, ако нишката е прекъсната, докато чака връзката. ###spring.datasource.read-onlyКогато използвате Hikari пула за връзки, дали да маркирате източника на данни като само за четене ###spring.datasource.register-mbeans посочва дали пулът за връзки Hikari регистрира JMX MBeans. ###spring.datasource.remove-abandoned уточнява дали да се изтрие връзка веднага след изхвърленото време. ###spring.datasource.remove-abandoned-timeoutОпределя времето, когато връзката трябва да бъде прекъсната. ###spring.datasource.rollback-on-returnДали да се върне чакаща транзакция при връщане на връзка. ###spring.datasource.schema определя скрипта Schema (DDL). ###spring.datasource.separator определя разделителя на оператори за инициализация на скрипта, по подразбиране: ; ###spring.datasource.sql-script-encoding определя кодирането на SQL скриптове. ###spring.datasource.suspect-timeoutПосочва таймаута преди отпечатване на изоставената връзка. ###spring.datasource.test-on-borrowПри заемане на връзка от пул връзки, дали да се тества връзката. ###spring.datasource.test-on-connect се създава, дали да се тества връзката ###spring.datasource.test-on-returnДали връзката се връща в пула на връзките. ###spring.datasource.test-while-iddleДали да се извърши тест за връзка, когато връзката е неактивна. ###spring.datasource.time-between-eviction-runs-millis Определя интервала на време за работа между проверки на неактивна връзка, почистване на изоставена връзка и оразмеряване на пула от неактивни връзки ###spring.datasource.transaction-isolation определя нивото на изолация на транзакции, което се задава при използване на пула на връзките Hikari ###spring.datasource.url определя JDBC URL адреса. ###spring.datasource.use-disposable-connection-façade обвива връзката, за да предотврати използването ѝ след затваряне. ###spring.datasource.use-равно на това дали да се използва String.equals() като заместител ==. ###spring.datasource.use-lock е заключен при операцията за връзка ###spring.datasource.usernameПосочи името на базата данни. ###spring.datasource.validation-interval определя колко ms да се извърши проверка на връзката. ###spring.datasource.validation-query специфицира SQL заявката за валидиране на връзката при получаване на връзка. ###spring.datasource.validation-query-timeoutОпределя времето за тайм-аут за заявката за валидация на връзката. ###spring.datasource.validation-timeoutЗадава времето за тайм-аут за валидиране на връзката, което се задава при използване на пула за връзки Hikari ###spring.datasource.validator-class-name Пълният квалификатор на валидатора, използван за тестване на заявката. ###spring.datasource.xa.data-source-class-name Определя пълния квалификатор на източника на данни. ###spring.datasource.xa.properties определя свойствата, предавани към 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-активен=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring Информация за конфигурацията на JPA ###spring.jpa.database посочва целевата база данни. ###spring.jps.show-sq: Дали да се показват SQL оператори ###spring.jpa.hibernate.ddl-auto определя DDL режим (none, validate, update, create, create-drop). При използване на вградена база данни по подразбиране е create-drop, в противен случай е никакви. ###spring.jpa.hibernate.naming-strategyУточнете политиката за именуване. ###其他: ###spring.jpa.database-platformСпецифицира типа целева база данни. ###spring.jpa.generate-ddl дали да се инициализира схемата при стартиране, по подразбиране е false ###spring.jpa.hibernate.ddl-auto определя DDL режим (none, validate, update, create, create-drop). При използване на вградена база данни по подразбиране е create-drop, в противен случай е никакви. ###spring.jpa.hibernate.naming-strategyУточнете политиката за именуване. ###spring.jpa.open-in-view регистрира OpenEntityManagerInViewInterceptor и свързва JPA EntityManager към нишката за заявка, като по подразбиране е вярно ###spring.jpa.properties добавя допълнителни атрибути към JPA доставчика. ###spring.jpa.show-sql Дали да се активира SQL log по подразбиране е зададена на false ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = вярно 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
Цялата структура на пакета
Конфигурация на източника на данни:
Клас на обекти:
Интерфейс за работа с база данни:
Интерфейсът за операции с база данни наследява от генеричния клас JpaRepository и когато го наследява, получава божествената сила, която дарява на разработчиците:
Можем директно да извикаме тези методи за извършване на операции с база данни, а също така можем да персонализираме HQL, за да изпълнява други операции, които отговарят на нашата личност, като:
В този код, чрез @Query коментар,Завършва писането на HQLкъдето ":name" е съвместимо с параметъра в анотацията @Param по-долу.
Забележка: Името на таблицата в HQL трябва да е името на класа на ORM картата, а HQL има някои разлики от традиционните SQL оператори, като например значението на "*" е различно и т.н.
Ако не сте свикнали да използвате HQL, можете да използвате и SQL оператори:
Горният метод все още е ефективен, когато се изпълни.nativeQuery към true означава използването на езика SQL。
Клас контролер:
Започнете проекта
Hibernate автоматично ще съпоставя класове на обекти към базата данни, за да създаде релевантни таблици за нас, и автоматично ще съвпадне с таблици на базата данни въз основа на анотации като @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO) и др. Спестете много работа с преброяване.
(Преди да започнете проекта, първо трябва да изградите базата данни и таблицата ще се създаде автоматично)
hibernate_sequence таблица е стратегия за генериране на id @GeneratedValue анотирана, GenerationType.AUTO представлява автоматично генериране, при условие че id атрибутът трябва да е int или long тип тип; ако е id от String тип, добавянето на тази анотация върху id веднага ще отчете грешка. Следователно, ако е за id на типа String, не е нужно да анотирате id с @GeneratedValue (strategy = GenerationType.AUTO).
Поискайте тест
Пълна заявка за данни и запазване на данни чрез get и post съответно.
ПозовеВходът към хиперлинк е видим.Интерфейсът POST иска за добавяне на данни, както е показано на следващата фигура:
Заявката към базата данни е следната:
Получавайте данните чрез следния интерфейс:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Забележка: Както е поискано от горния интерфейс, Java е много чувствителна към регистра, независимо дали става дума за URL адреса или параметрите, тя трябва да е с главни букви! Ако буквата е с големи или малки, заявката ще не достигне до интерфейса или параметърът ще бъде празен!
Друидът наблюдава следните ситуации:
Накрая, прикачете изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
(Край)
|
Предишен:Не успях да конфигурирам DataSourceСледващ:Следобеден чай Джию | Сряда, 20 февруари 2019 г.
|