Вземете всички данни от таблица с хибернация

1. Общ преглед

В този бърз урок ще разгледаме как да вземем всички данни от таблица с хибернация, използвайки JPQL или Criteria API.

JPQL ни осигурява по-бързо и опростено внедряване, докато използването на Criteria API е по-динамично и стабилно.

2. JPQL

JPQL предоставя прост и ясен начин да получите всички обекти от таблица.

Нека да видим как може да изглежда извличането на всички ученици от таблица с помощта на JPQL:

public List findAllStudentsWithJpql() { return session.createQuery("SELECT a FROM Student a", Student.class).getResultList(); } 

Методът createQuery () на нашата хибернация получава въведен низ за заявка като първи аргумент и типа на обекта като втори. Изпълняваме заявката с извикване на метода getResultList () , който връща резултатите като въведен списък .

Простотата е предимството на този подход. JPQL е много близък до SQL и следователно е по-лесен за писане и разбиране.

3. API за критерии

API на критериите осигурява динамичен подход за изграждане на JPA заявки.

Тя ни позволява да изграждаме заявки чрез създаване на инстанции на Java обекти, които представляват елементи на заявка. И това е по-чисто решение, ако заявките се изграждат от много незадължителни полета, защото елиминира много конкатенации на низове.

Току-що видяхме заявка за избор на всички, използвайки JPQL. Нека да разгледаме еквивалента му, използвайки Criteria API:

public List findAllStudentsWithCriteriaQuery() { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Student.class); Root rootEntry = cq.from(Student.class); CriteriaQuery all = cq.select(rootEntry); TypedQuery allQuery = session.createQuery(all); return allQuery.getResultList(); } 

Първо получаваме CriteriaBuilder, който използваме за създаване на въведена Criteria Query . По-късно задаваме основния запис за заявката. И накрая, ние го изпълняваме с метод getResultList () .

Този подход е подобен на този, който направихме по-рано. Но това ни дава пълен достъп до езика Java, за да формулираме по-голям нюанс при формулирането на заявката.

Освен че са подобни, JPQL заявките и заявките, базирани на JPA критерии, са еднакво ефективни.

4. Заключение

В тази статия демонстрирахме как да вземем всички обекти от таблица, използвайки JPQL или Criteria API.

Пълният изходен код за примера е достъпен на GitHub.