Шта је ЈПА?
Спринг Боот ЈПА је Јава спецификација за управљање релациони података у Јава апликацијама. Омогућава нам приступ и задржавање података између Јава објекта/класе и релационе базе података. Следи ЈПА Мапирање објеката и односа (ОРМ). То је скуп интерфејса. Такође обезбеђује време извођења ЕнтитиМанагер АПИ за обраду упита и трансакција на објектима према бази података. Користи платформски независан објектно оријентисани језик упита ЈПКЛ (Јава Персистент Куери Лангуаге).
У контексту истрајности, покрива три области:
- Јава Персистенце АПИ
- Сам АПИ, дефинисан у упорност пакет
ЈПА није оквир. Он дефинише концепт који се може имплементирати било којим оквиром.
Зашто бисмо користили ЈПА?
ЈПА је једноставнији, чистији и мање радно интензиван од ЈДБЦ, СКЛ-а и ручно писаног мапирања. ЈПА је погодан за сложене апликације које нису оријентисане на перформансе. Главна предност ЈПА у односу на ЈДБЦ је у томе што су у ЈПА подаци представљени објектима и класама, док су у ЈДБЦ подаци представљени табелама и записима. Користи ПОЈО за представљање трајних података који поједностављују програмирање базе података. Постоје још неке предности ЈПА:
- ЈПА избегава писање ДДЛ-а на дијалекту СКЛ-а специфичном за базу података. Уместо тога, омогућава мапирање у КСМЛ-у или коришћење Јава напомена.
- ЈПА нам омогућава да избегнемо писање ДМЛ-а на дијалекту СКЛ-а специфичном за базу података.
- ЈПА нам омогућава да чувамо и учитавамо Јава објекте и графиконе без икаквог ДМЛ језика.
- Када треба да извршимо ЈПКЛ упите, он нам омогућава да изразимо упите у терминима Јава ентитета, а не у (матичним) СКЛ табелама и колонама.
ЈПА карактеристике
Постоје следеће карактеристике ЈПА:
- То је моћно складиште и обичај апстракција мапирања објеката.
- Подржава за постојаност међу продавницама . То значи да ентитет може бити делимично ускладиштен у МиСКЛ и Нео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. Враћа корисника којег смо убацили у базу података.
Преузмите пример пројекта Апацхе дерби