„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? ===