„Háttéralkalmazások/Záróvizsgatételek” változatai közötti eltérés
→5. JPA – általános: Tétel kidolgozása |
→6. JPA – használat: Tétel kidolgozása |
||
| 786. sor: | 786. sor: | ||
=== Milyen módokon lehet lekérdezést megfogalmazni a JPA-ban? === | === Milyen módokon lehet lekérdezést megfogalmazni a JPA-ban? === | ||
... | {| class="wikitable" | ||
!komplexitás | |||
!módszer | |||
!példa | |||
|- | |||
|egyszerű | |||
|elsődleges kulcs alapján | |||
|<syntaxhighlight lang="java" line="1">Person p = entityManager.find(Person.class, 42L);</syntaxhighlight> | |||
|- | |||
| rowspan="2" |feltételekkel | |||
|Criteria API | |||
|<syntaxhighlight lang="java" line="1">CriteriaBuilder cb = entityManager.getCriteriaBuilder(); | |||
CriteriaQuery<Person> cq = cb.createQuery(Person.class); | |||
Root<Person> root = cq.from(Person.class); | |||
cq.select(root) | |||
.where(cb.equal(root.get("name"), "David")); | |||
Person p = entityManager.createQuery(cq).getSingleResult();</syntaxhighlight> | |||
|- | |||
|Query by Example<ref>Nem tananyag, de Tanár Úr jelezte, hogy a Java 2. házit ennek segítségével lehet megoldani legszebben.</ref> | |||
|<syntaxhighlight lang="java" line="1">Person probe = new Person(); | |||
ExampleMatcher matcher = ExampleMatcher | |||
.matching() | |||
.withMatcher("firstName", match -> match.regex().ignoreCase()); | |||
probe.setFirstName("^Dav.*"); | |||
Example<Person> example = Example.of(probe, matcher); | |||
List<Person> results = repo.findAll(example);</syntaxhighlight> | |||
|- | |||
| rowspan="2" |nyersen | |||
''(el is lehet nevezni őket)'' | |||
|JPQL | |||
|<syntaxhighlight lang="java" line="1">TypedQuery<Person> q = entityManager.createQuery( | |||
"SELECT p FROM Person p WHERE p.age > :age", Person.class | |||
); | |||
q.setParameter("age", 30); | |||
List<Person> list = q.getResultList();</syntaxhighlight> | |||
|- | |||
|SQL | |||
|<syntaxhighlight lang="java" line="1">List<Object[]> rows = entityManager.createNativeQuery( | |||
"SELECT first_name, last_name FROM person WHERE age > :min" | |||
) | |||
.setParameter("min", 30) | |||
.getResultList(); | |||
for (Object[] row : rows) { | |||
String firstName = (String) row[0]; | |||
String lastName = (String) row[1]; | |||
}</syntaxhighlight> | |||
|} | |||
=== Hogyan bővíti a lehetőségeket a Spring Data JPA a lekérdezések megfogalmazásának területén? === | === Hogyan bővíti a lehetőségeket a Spring Data JPA a lekérdezések megfogalmazásának területén? === | ||