1. Введение
(1) MySQL является реляционной системой баз данных, наиболее часто используемой и обширной базой данных для интернет -компаний сегодня. Это база данных на стороне сервера, которая может выдержать высокие параллельные посещения.
(2) Spring-Data-JPA-это реализация уровня репозитория, представленного в соответствии с спецификацией JPA. Он может быть разработан с использованием различных структур реализации, таких как Hibernate, OpenJPA и другие рамки. Это может сделать репозиторий простым и решить его связь с бизнес -слоем.
В этом исследовании мы используем MySQL + Spring-Data-JPA для его построения. Метод реализации JPA использует Hibernate. Пул соединений базы данных использует DBCP для соединения.
2. Строительство проекта
1. Представьте зависимости MySQL и JPA:
<!-Связанные зависимости от Spring-JDBC-> <Depective> <groupId> org.springframework </GroupId> <strifactid> Spring-jdbc </artifactid> </getyse> <!-Связанные зависимости для соединения с mySQL-> <Depective> <groupId> mySQL </GroupID> <artifactId>mysql-connector-java</artifactId></dependency><!-- JPA-related dependencies include spring-data-jpa, spring-orm and Hibernate to support JPA --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
Три зависимости должны быть введены. JDBC - это зависимость, необходимая для Spring Integraing MySQL. Второе-зависимость от драйвера базы данных MySQL, а третье-зависимость от пружины-дата-JPA:
Он включает в себя зависимости, такие как AOP, JDBC, пружина, транзакционные транзакции-API и Hibernate, чтобы поддержать его. Таким образом, JPA по умолчанию реализует его с помощью Hibernate.
2. Конфигурация файла конфигурации:
Мы выбираем файл .yml format для файла конфигурации и используем DPCP2 для настройки параметров пула соединений:
1) Конфигурация, связанная с проектом:
Сервер: #configuration № порта порт: 8088spring: Приложение: #configuration service name name: cms-dept
Вот соответствующая информация о настройке открытия сервера, в основном настройки имени сервера и порта
2) Конфигурация, связанная с MySQL
Spring: #data источник источника и настройка конфигурации JPA: #Соединение конфигурации, связанное с базой данных, установлено для ложного URL: JDBC: mysql: // localhost: 3306/crm? Характеринкодинг = utf8 & usessl = false #configuration username: *** #configuration пароль: ***: ***
Вот некоторые конфигурации, связанные с базой данных, в основном настройка URL-адреса базы данных, учетную запись и пароль. Информация о конфигурации после URL -адреса является форматом кодирования подключенного MySQL и включен ли шифрование SSL.
3) Конфигурация, связанная с DBCP
Spring: #Ниже приведена конфигурация DBCP2 для пула соединений: #Initialize Размер пула соединений. Время промежуточного события-проката Millis: 200000 #configure Минимальное время выживания соединения в подключении
Он в основном настроен как некоторая информация о пуле соединений, а детали конфигурации показаны в приведенных выше комментариях.
4) Spring-Data-JPA основан на конфигурации, связанной с ihibernata
spring: jpa: #Configure database type database: MYSQL #Configure whether to print sql show-sql: true #Hibernate related configuration hibernate: #Configure cascade level ddl-auto: update naming: #Naming strategy: org.hibernate.cfg.ImprovedNamingStrategy properties: hibernate: dialect: org.hibernate.dialect.mysql5dialect
Конфигурация - тип базы данных подключения, и печатать ли каскад SQL и Hibernate, есть несколько типов:
1) Проведите- Когда загружается Hibernate, проверьте создание структуры таблицы баз данных.
2) Создать- воссоздать каждый раз, когда загружается Hibernate, воссоздается структура таблицы баз данных, что является причиной потери данных таблицы баз данных.
3) Создать каплей, созданный при загрузке Hibernate, а выход-удалить структуру таблицы.
4) Обновление обновления CASCADE Загрузка Hibernate автоматически обновляет структуру базы данных.
Здесь мы выбираем каскадные обновления и итерацию в исходной таблице.
Есть два типа стратегий именования:
1), org.springframework.boot.orm.jpa.hibernate.springphysicalnamingStrategy встречается с заглавной буквой плюс "_".
2), org.hibernate.cfg.ImprovednamingStrategy без применения модификации.
3. Настройка связанных классов:
Класс конфигурации должен быть настроен в горизонтальном каталоге или подкаталоге с пневматическим классом, прежде чем его можно будет успешно настроить. Здесь мы используем конфигурацию класса Java вместо метода XML для конфигурации:
/*** @function Описание: класс для конфигурации, связанной с MySQL* @Author Administrator* /// Следующая строка используется для сортировки интерфейса аннотации для решения проблем с приоритетом загрузки. Он имеет две переменные валюты @Order (orducted.highest_precedence) // Следующая строка представляет этот класс как класс конфигурации @configuration // Следующая строка представляет этот класс, чтобы включить управление транзакциями @enabletransactionmanageman @Componentscan.filter (type = filtertype.annotation, value = service.class)} @enablejparepositories (basepackages = "com.hzt. **. Repository") открытый класс mysqlconfig {@bean persistenceexceptiontranspostprocsoressexcret PersistenceExceptionTranslationPostProcessor (); }} 1) Аннотация @Order, используемая для настройки приоритета загрузки класса, она имеет две переменные перечисления:
Заказано. Highest_precedence- Integer.min_value - Минимальное значение с самым высоким приоритетом
Заказано. Lowest_precedence -integer.max_value -maximum
2) Аннотация @configuration, что означает, что этот класс является классом конфигурации
3) @enableTransactionManagement Management для MySQL ProxyTargetClass = True Care для обеспечения управления транзакциями класса
4) @enablejparePositories используется для настройки транзакций. Здесь путь представлен выражением CGNL, и он также может быть определен как конкретный класс, такой как Deptrepository.class
Его дочерний элемент включает Filters может определять перехватчики транзакций, такие как includefilters = { @componentscan.filter (type = filtertype.annotation, value = service.class)}
4. Орм составил код, связанный с классом Java:
1) Структура таблицы баз данных
2) Картирование класса сущности
@Entity // представляет этот тип класса сопоставления объектов для таблицы @Table (name = "tbl_dept") // Установить соответствующее имя таблицы. */ Частный статический конечный длинный сериал -ofionuid = 1L; /** Первичный ключ -ID UUID*/@ID // Это примечание означает, что поле является первичным ключом класса @GeneratedValue (Generator = "System -UUID") @GenericGenerator (name = "System -Uuid", стратегия = "UUID") // Имя -Укажите имя соответствующего столбца, длина -максимальная длина @Column (имя = "ID", 32); /** numer, уникальный*// // nullable - может ли он быть нулевым, по умолчанию к истинному уникальному - уникально, по умолчанию, по умолчанию false @column (name = "no", nullable = false, уникальный = истинный) частное целое число; / ** Имя отделения*/ @column (name = "name", inistine = true, nullable = false) частное имя строки; / ** Первичный ключ управления отдела -ID uuid*/ @column (name = "Manager", уникальный = true, nullable = false) Private String Manager; / ** Описание отдела*/ @column (name = "description") частная строка Описание; / ** Департамент телефон*/ @column (name = "phone") частный строковый телефон; / ** Департамент телефон*/ @column (name = "phone") частный строковый телефон; / ** Время создания отдела*/ @column (name = "createTime") @DateTimeFormat (pattern = "yyyy-mm-dd HH: MM: SS") частная дата Create-Time; / ** Время изменения отдела*/ @column (name = "edittime") @datetimeformat (pattern = "yyyy-mm-dd hh: mm: ss") частная дата Edittime;}
(1), @Entity представляет структуру таблицы этого типа отображения в качестве базы данных
(2), @Table (name = "tbl_dept") Эта аннотация используется для настройки взаимосвязи между классом сущности и картированием таблицы. Имя представляет имя таблицы.
(3) аннотация @ID означает, что этот класс является основным ключом
(4), аннотация @GeneratedValue используется для настройки информации, связанной с первичным ключом, а атрибут генератора используется для настройки стратегии генерации. Есть следующие значения перечисления:
1.Auto - Первичный ключ контролируется программой.
2. Identity - автоматически генерируется базой данных.
3. Enerator - указывает генератор, используемый для генерации первичного ключа.
4. Последовательность - генерировать первичные ключи на основе последовательности базовой базы данных.
5. Таблица - Используйте конкретную таблицу базы данных, чтобы сохранить первичный ключ.
6. System-UUID представляет использование сгенерированного системой UUID для сопоставления.
(5) Аннотация @column для настройки информации, связанной с столбцами 1. Поле имен используется для указания поля отображения, отображаемого с структурой таблицы.
2. Длина представляет собой ограничение длины этого поля и может быть опущено.
3. Уникальный атрибут представляет, имеет ли это поле уникальные ограничения. По умолчанию неверно, а уникальный - это правда.
4. Нулевые означает, может ли это поле пустым, и по умолчанию верно. Неверно означает, что это не может быть пустым.
(6) @DateTimeFormat используется для картирования таблицы базы данных.
Соответствующие методы получения и установки были опущены.
3) Реализация DepTrepository Layer
Как показано на рисунке, респо-спецификация является спецификацией интерфейса, с различным подсчетом подпользования. В дополнение к унаследованию всех функций родительского интерфейса, каждый подвладелец также добавит дополнительные методы для различных реализаций. Класс CrudRepository определяет основной метод, и его подклассы расширяются отдельно.
Например, в дополнение к унаследованию всех методов сухонеспозиции, класс PagingandSortingRepository также расширяет его, добавляя соответствующие методы для поиска под пейджин:
Итерабильный <t> findall (сортировка сортировки); page <t> findall (переночный трюм);
JParePository расширяется на основе PagingandSortingRepository.
1. Резейрий слой:
@Repository представляет, что этот класс управляется пружиной, и это слой DAO
/*** @function Описание: интерфейс слоя DAO для операции таблицы департамента* @Author Administrator*/ @Repository // Репозиторий Это реализация DAO Layer Public Interface DepTrepository Extends jParePository <dept, string> {}В зависимости от класса реализации, он имеет разные методы для вызова. Как правило, каждый может знать использование этого метода, зная имя и значение. В общем типе первый параметр представляет класс объекта карты таблицы, а второй параметр представляет собой первичный тип ключа.
2. Реализация сервисного уровня:
/*** @function Описание: Класс реализации для операций службы отдела* @Author Administrator*/ @ServicePublic Class DeptServiceImpl реализует DptService {/** Класс обработки журнала*/private final Logger = loggerFactory.getLogger (getClass ()); @Autowired Private DepTrepository Repository; @Override public Dept QueryByid (String Id) Throws Exception {try {dept result = repository.findone (id); log.info (result.toString ()); результат возврата; } catch (Exception e) {log.info (e.toString (), e); бросить новое Service Exception («Исключение произошло во время запроса в соответствии с ID!»); }}}Где Findone - это метод, реализованный JParePository.
3. Реализация уровня контроллера:
@Restcontroller@requestmapping ("/api/v1/dept") открытый класс deptcontroller {/** class*/private logger log = loggerfactory.getlogger (getClass ()); / ** моя собственная услуга*/ @autowired Private Deptservice Service; /*** @function Описание: Метод для запроса содержимого отдела на основе идентификатора* @return Dept*/@getmapping ("/id/get") public result getbyid (идентификатор строки) Throws Exception {verify (new Verifyparam ("ID отдела", id)); вернуть новый результат («успешно полученный через ID!», Service.querybyid (id)); }}Там, где RestController представляет контроллер, который возвращает формат JSON, @Requestmapping определяет URL его карты классов. Данные, которые мы принимаем здесь, являются обычным типом строки. Если вам нужно принять тип JSON, вам нужен идентификатор строки @Requestbody, чтобы настроить параметры запроса, чтобы принять.
4. Тест:
Моделируйте отправку запросов GET для завершения интеграции и конфигурации Spring-Data-JPA и MySQL.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.