logo

Спринг Боот ЈПА

Шта је ЈПА?

Спринг Боот ЈПА је Јава спецификација за управљање релациони података у Јава апликацијама. Омогућава нам приступ и задржавање података између Јава објекта/класе и релационе базе података. Следи ЈПА Мапирање објеката и односа (ОРМ). То је скуп интерфејса. Такође обезбеђује време извођења ЕнтитиМанагер АПИ за обраду упита и трансакција на објектима према бази података. Користи платформски независан објектно оријентисани језик упита ЈПКЛ (Јава Персистент Куери Лангуаге).

У контексту истрајности, покрива три области:

  • Јава Персистенце АПИ
  • Објектно-релациониметаподаци
  • Сам АПИ, дефинисан у упорност пакет

ЈПА није оквир. Он дефинише концепт који се може имплементирати било којим оквиром.

Зашто бисмо користили ЈПА?

ЈПА је једноставнији, чистији и мање радно интензиван од ЈДБЦ, СКЛ-а и ручно писаног мапирања. ЈПА је погодан за сложене апликације које нису оријентисане на перформансе. Главна предност ЈПА у односу на ЈДБЦ је у томе што су у ЈПА подаци представљени објектима и класама, док су у ЈДБЦ подаци представљени табелама и записима. Користи ПОЈО за представљање трајних података који поједностављују програмирање базе података. Постоје још неке предности ЈПА:

  • ЈПА избегава писање ДДЛ-а на дијалекту СКЛ-а специфичном за базу података. Уместо тога, омогућава мапирање у КСМЛ-у или коришћење Јава напомена.
  • ЈПА нам омогућава да избегнемо писање ДМЛ-а на дијалекту СКЛ-а специфичном за базу података.
  • ЈПА нам омогућава да чувамо и учитавамо Јава објекте и графиконе без икаквог ДМЛ језика.
  • Када треба да извршимо ЈПКЛ упите, он нам омогућава да изразимо упите у терминима Јава ентитета, а не у (матичним) СКЛ табелама и колонама.

ЈПА карактеристике

Постоје следеће карактеристике ЈПА:

  • То је моћно складиште и обичај апстракција мапирања објеката.
  • Подржава за постојаност међу продавницама . То значи да ентитет може бити делимично ускладиштен у МиСКЛ и Нео4ј (Систем управљања базом података графикона).
  • Динамички генерише упите из назива метода упита.
  • Основне класе домена пружају основна својства.
  • Подржава транспарентну ревизију.
  • Могућност интегрисања прилагођеног кода спремишта.
  • Лако се интегрише са Спринг Фрамеворк-ом са прилагођеним простором имена.

ЈПА Арцхитецтуре

ЈПА је извор за складиштење пословних субјеката као релационих ентитета. Показује како се дефинише ПОЈО као ентитет и како управљати ентитетима са релацијом.

Следећа слика описује архитектуру ЈПА на нивоу класе која описује основне класе и интерфејсе ЈПА који је дефинисан у јавак персистенце пакет. ЈПА архитектура садржи следеће јединице:

    Упорност:То је класа која садржи статичке методе за добијање ЕнтитиМанагерФацтори инстанце.ЕнтитиМанагерФацтори:То је фабричка класа ЕнтитиМанагер-а. Он креира и управља вишеструким инстанцама ЕнтитиМанагер-а.ЕнтитиМанагер:То је интерфејс. Он контролише операције постојаности на објектима. Ради за инстанцу упита.Ентитет:Ентитети су објекти постојаности који се чувају као запис у бази података.Јединица постојаности:Дефинише скуп свих класа ентитета. У апликацији, ЕнтитиМанагер инстанце управљају њоме. Скуп класа ентитета представља податке садржане у једном складишту података.ЕнтитиТрансацтион:Има а један на један однос са класом ЕнтитиМанагер. За сваки ЕнтитиМанагер, операције одржава класа ЕнтитиТрансацтион.упит:То је интерфејс који имплементира сваки ЈПА добављач за добијање објеката релација који испуњавају критеријуме.
Спринг Боот јпа

ЈПА класни односи

Класе и интерфејси о којима смо горе говорили одржавају однос. Следећа слика приказује однос између класа и интерфејса.

Спринг Боот јпа
  • Однос између ЕнтитиМанагер-а и ЕнтииТрансацтион је један на један . За сваку операцију ЕнтитиМанагер постоји ЕнтитиТрансацтион инстанца.
  • Однос између ЕнтитиМанагеФацтори и ЕнтииМанагер је један према више . То је фабричка класа за ЕнтитиМанагер инстанцу.
  • Однос између ЕнтитиМанагер-а и упита је један према више . Можемо извршити било који број упита користећи инстанцу класе ЕнтитиМанагер.
  • Однос између ЕнтитиМанагер-а и Ентитета је један према више . ЕнтитиМанагер инстанца може управљати више ентитета.

Имплементације ЈПА

ЈПА је АПИ отвореног кода. Постоје различити добављачи предузећа као што су Ецлипсе, РедХат, Орацле, итд. који пружају нове производе додавањем ЈПА у њих. Постоје неки популарни оквири за имплементацију ЈПА као што су Хибернација, ЕцлипсеЛинк, ДатаНуцлеус, итд.Познато је и као Мапирање објеката и односа (ОРМ) алат.

Мапирање објеката и односа (ОРМ)

У ОРМ-у се позива мапирање Јава објеката у табеле базе података и обрнуто Објектно-релационо мапирање. ОРМ мапирање функционише као мост између а релациона база података (табеле и записи) и Јава апликација (класе и објекти).

На следећој слици, ОРМ слој је слој адаптера. Он прилагођава језик графова објеката језику СКЛ-а и табела релација.

Спринг Боот јпа

ОРМ слој постоји између апликације и базе података. Конвертује Јава класе и објекте тако да се њима може чувати и управљати у релационој бази података. Подразумевано, име које постоји постаје име табеле, а поља постају колоне. Једном када се апликација постави, сваки ред табеле одговара објекту.

ЈПА верзије

Раније верзије ЕЈБ-а дефинишу слој постојаности у комбинацији са слојем пословне логике користећи јавак.ејб.ЕнтитиБеан Интерфејс. ЕЈБ спецификација укључује дефиницију ЈПА.

Приликом увођења ЕЈБ 3.0, слој постојаности је одвојен и специфициран као ЈПА 1.0 (Јава Персистенце АПИ). Спецификације овог АПИ-ја су објављене заједно са спецификацијама ЈАВА ЕЕ5 11. маја 2006, користећи ЈСР 220.

2019. ЈПА је преименована у Јакарта Персистенце . Најновија верзија ЈПА је 2.2 . Подржава следеће карактеристике:

  • Јава 8, АПИ за податке и време
  • ЦДИ Ињецтион у АттрибутеЦонвертес
  • То чини напомене @Репеатабле

Разлика између ЈПА и хибернације

ЈПА: ЈПА је Јава спецификација која се користи за приступ, управљање и задржавање података између Јава објекта и релационе базе података. То је стандардни приступ за ОРМ.

хибернација: То је лаган ОРМ алат отвореног кода који се користи за складиштење Јава објеката у систему релационе базе података. То је добављач ЈПА. Следи заједнички приступ који пружа ЈПА.

Следећа табела описује разлике између ЈПА и хибернације.

ЈПА Хибернате
ЈПА је а Јава спецификација за мапирање релационих података у Јава апликацији. Хибернација је ан ОРМ оквир који се бави постојаношћу података.
ЈПА не пружа никакве класе имплементације. Он пружа класе имплементације.
Користи језик упита независан од платформе тзв ЈПКЛ (Јава Персистенце Куери Лангуаге). Користи сопствени језик упита тзв ХКЛ (Хибернате Куери Лангуаге).
Дефинисано је у јавак.персистенце пакет. Дефинисано је у орг.хибернате пакет.
Имплементиран је у различитим ОРМ алатима као што су Хибернација, ЕцлипсеЛинк, итд. Хибернација је провајдера оф ПСД.
ЈПА користи ЕнтитиМанагер за руковање постојаношћу података. У хибернацији користи Седница за руковање постојаношћу података.

Спринг Боот Стартер Дата ЈПА

Спринг Боот обезбеђује зависност од покретача спринг-боот-стартер-дата-јпа да ефикасно повеже Спринг Боот апликацију са релационом базом података. Спринг-боот-стартер-дата-јпа интерно користи зависност спринг-боот-јпа.

 org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE 

Спринг Боот ЈПА пример

Хајде да направимо Спринг Боот апликацију која користи ЈПА за повезивање са базом података. У следећем примеру користили смо базу података у меморији Апацхе Дерби.

Апач дерби: То је отвореног кода, уграђен релационе базе података имплементиране у потпуности у Јави. Доступан је под Апацхе лиценцом 2.0. Апацхе Дерби има следеће предности:

  • Лако се инсталира, поставља и користи.
  • Заснован је на Јава, ЈДБЦ и СКЛ стандардима.
  • Пружа уграђени ЈДБЦ драјвер који нам омогућава да уградимо Дерби у било које решење засновано на Јави.
  • Такође подржава клијент/сервер режим са Дерби Нетворк Цлиент ЈДБЦ драјвером и Дерби Нетворк Сервером.

Спринг Боот може аутоматски да конфигурише уграђену базу података као што је Х2, ХСКЛ, и Дербидатабасес . Не морамо да дајемо никакве УРЛ адресе за везу. Потребно је само да укључимо зависност изградње од уграђене базе података коју желимо да користимо.

У Спринг Боот-у можемо лако да интегришемо Апацхе Дерби базу података само додавањем Дерби зависност у пом.кмл датотеци.

 org.apache.derby derby runtime 

Корак 1: Отворите Спринг Инитиализр хттпс://старт.спринг.ио/ .

Корак 2: Изаберите најновију верзију Спринг Боот-а 2.3.0 (СНАП)

Корак 3: Обезбедите Група име. Ми смо обезбедили цом.јаватпоинт.

4. корак: Обезбедите Предмет за употребу Ид. Ми смо обезбедили апацхе-дерби-екампле .

5. корак: Додајте зависности: Спринг Веб, Спринг Дата ЈПА, и Апацхе Дерби база података .

Корак 6: Кликните на Генериши дугме. Када кликнемо на дугме Генерирај, он умотава пројекат у Јар датотеку и преузима га на локални систем.

Спринг Боот јпа

Корак 7: Екстракт Јар датотеку и налепите је у СТС радни простор.

Корак 8: Увезите фасциклу пројекта у СТС.

Датотека -> Увоз -> Постојећи Мавен пројекти -> Прегледај -> Изаберите фасциклу апацхе-дерби-екампле -> Заврши

Потребно је неко време за увоз.

9. корак: Направите пакет са именом цом.јаватпоинт.модел у фасцикли срц/маин/јава.

10. корак: Направите класу са именом УсерРецорд у пакету цом.јаватпоинт.модел и урадите следеће:

  • Дефинишите три варијабле ид, име, и емаил .
  • Генеришите Геттерс и Сеттер.
    Кликните десним тастером миша на датотеку -> Извор -> Генериши Геттерс и Сеттерс
  • Дефинишите подразумевани конструктор.
  • Означите разред као Ентитет коришћењем напомене @Ентити.
  • Марк Ид као примарни кључ коришћењем напомене @Ид.

УсерРецорд.јава

 package com.javatpoint.model; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class UserRecord { @Id private int id; private String name; private String email; //default conatructor public UserRecord() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

Корак 11: Направите пакет са именом цом.јаватпоинт.цонтроллер у фасцикли срц/маин/јава.

Корак 12: Направите класу Цонтроллер са именом УсерЦонтроллер у пакету цом.јаватпоинт.цонтроллер и урадите следеће:

  • Означите класу као контролер користећи напомену @РестЦонтроллер.
  • Аутоматски повезао час УсерСервице коришћењем напомене @Аутовиред .
  • Дефинисали смо два пресликавања, једно за добијање свих корисника а други за додати корисника.

УсерЦонтроллер.јава

 package com.javatpoint.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.UserRecord; import com.javatpoint.service.UserService; import java.util.List; @RestController public class UserController { @Autowired private UserService userService; @RequestMapping('/') public List getAllUser() { return userService.getAllUsers(); } @RequestMapping(value='/add-user', method=RequestMethod.POST) public void addUser(@RequestBody UserRecord userRecord) { userService.addUser(userRecord); } } 

Корак 13: Направите пакет са именом цом.јаватпоинт.сервице у фасцикли срц/маин/јава.

Корак 14: Направите класу услуге са именом УсерСервице у пакету цом.јаватпоинт.сервице и урадите следеће:

  • Означите класу као услугу користећи напомену @Сервис.
  • Аутовиред тхе УсерРепоситори
  • Дефинишите метод гетАллУсерс() који враћа Листу
  • Дефинишите друго име методе додати корисника() који чува кориснички запис.

УсерСервице.јава

 package com.javatpoint.service; import java.util.List; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.UserRecord; import com.javatpoint.repository.UserRepository; @Service public class UserService { @Autowired private UserRepository userRepository; public List getAllUsers() { ListuserRecords = new ArrayList(); userRepository.findAll().forEach(userRecords::add); return userRecords; } public void addUser(UserRecord userRecord) { userRepository.save(userRecord); } } 

Корак 15: Направите пакет са именом цом.јаватпоинт.репоситори у фасцикли срц/маин/јава.

Корак 16: Направите интерфејс спремишта са именом УсерРепоситори у пакету цом.јаватпоинт.репоситори и продужава се ЦрудРепоситори .

УсерРепоситори.јава

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.UserRecord; public interface UserRepository extends CrudRepository { } 

Корак 17: Сада, отворите АпацхеДербиЕкамплеАпплицатион.јава фајл. Подразумевано се креира када постављамо апликацију.

АпацхеДербиЕкамплеАпплицатион.јава

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ApacheDerbyExampleApplication { public static void main(String[] args) { SpringApplication.run(ApacheDerbyExampleApplication.class, args); } } 

Сада смо поставили све потребне класе и пакете према захтевима. Приметите да нисмо обезбедили ниједан УРЛ везе за базу података. Након што завршите све горе наведене кораке, директоријум пројекта изгледа овако:

Спринг Боот јпа

Хајде да покренемо апликацију.

Корак 18: Отвори АпацхеДербиЕкамплеАпплицатион.јава датотеку и покрените је као Јава апликацију.

Корак 19: Отворите претраживач и позовите УРЛ хттп://лоцалхост:8080/. Враћа празну листу јер нисмо додали ниједног корисника на листу.

јава стринг методе

Да бисмо додали корисника у базу података, послаћемо а ПОШТА захтевајте коришћењем Поштар .

Корак 20: Отвори Поштар и урадите следеће:

  • Изаберите ПОШТА
  • Позовите УРЛ хттп://лоцалхост:8080/адд-усер.
  • Кликните на Тело
  • Изаберите Цонтент-Типе ас ЈСОН (апликација/јсон).
  • Убаците податке које желите да убаците у базу података. Унели смо следеће податке:
 { 'id': '001', 'name': 'Tom', 'email': '[email protected]' } 
  • Кликните на Пошаљи дугме.
Спринг Боот јпа

Када кликнемо на дугме Пошаљи, приказује се Статус:200 ОК . То значи да је захтев успешно извршен.

Корак 21: Отворите претраживач и позовите УРЛ хттп://лоцалхост:8080. Враћа корисника којег смо убацили у базу података.

Спринг Боот јпа
Преузмите пример пројекта Апацхе дерби