„Háttéralkalmazások/Záróvizsgatételek” változatai közötti eltérés

11. Microservices: Tétel kidolgozása
7. Spring: Tétel kidolgozása
66. sor: 66. sor:
Használatával eljárásokat (procedures) és függvényeket (functions), illetve triggereket lehet tárolni az adatbázisban. Lényege, hogy az üzleti logika helyett maga az adatbázis-kezelő szerver ''futtatja'' a beállított szubrutinokat, az előbbi csak ''meghívja'' őket.
Használatával eljárásokat (procedures) és függvényeket (functions), illetve triggereket lehet tárolni az adatbázisban. Lényege, hogy az üzleti logika helyett maga az adatbázis-kezelő szerver ''futtatja'' a beállított szubrutinokat, az előbbi csak ''meghívja'' őket.
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+a szerveroldali programozás jellemzői
|+A szerveroldali programozás jellemzői
!szempont / tulajdonság
!szempont / tulajdonság
!➕
!➕
137. sor: 137. sor:
A shadow-információk az adatbázisban szükséges, de az üzleti logika által nem használt kulcsokat, időbélyegeket és egyéb adatokat takarják.
A shadow-információk az adatbázisban szükséges, de az üzleti logika által nem használt kulcsokat, időbélyegeket és egyéb adatokat takarják.
{| class="wikitable"
{| class="wikitable"
|+egymásnak megfeleltethető adattípusok
|+Egymásnak megfeleltethető adattípusok
!üzleti logika
!üzleti logika
!adatbázis
!adatbázis
489. sor: 489. sor:
=== Hogy néz ki egy entitás, hogyan készítünk kapcsolatokat közöttük? ===
=== Hogy néz ki egy entitás, hogyan készítünk kapcsolatokat közöttük? ===
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+Összehasonlítás
!
!
!1:N
!1:N
787. sor: 788. 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 mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+Összehasonlítás
!komplexitás
!komplexitás
!módszer
!módszer
886. sor: 888. sor:
==== Kapcsolatok ====
==== Kapcsolatok ====
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+példa annotációkra
|+Példa annotációkra
!típus
!típus
!egyirányú
!egyirányú
1 029. sor: 1 031. sor:
== 7. Spring ==
== 7. Spring ==


=== Mik a függőséginjektálás főbb előnyei, és hogyan támogatja a Spring? ===
=== Mik a függőséginjektálás főbb előnyei? ===
...
 
* az injektornak ki van szervezve a függőség betöltése és az objektumgráfok előállítása
** kevesebb kódduplikáció
* könnyű mockolni a függőségeket
 
=== Hogyan támogatja a Spring? ===
A következő annotációkkal:
{| class="wikitable mw-collapsible mw-collapsed"
|+Opciók a legrosszabbtól a legjobbig
!lehet injektálni
!példa
|-
|mezőbe
|<syntaxhighlight lang="java" line="1">
@Service
public class UserService {
 
    @Autowired
    private UserRepository userRepository;
 
    public void getAllUsers() {
        userRepository.findAll();
    }
   
}
</syntaxhighlight>
|-
|setterbe
|<syntaxhighlight lang="java" line="1">
@Service
public class UserService {
 
    private UserRepository userRepository;
 
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    public void getAllUsers() {
        userRepository.findAll();
    }
   
}
</syntaxhighlight>
|-
|konstruktorba
|<syntaxhighlight lang="java" line="1">
@Service
public class UserService {
 
    private final UserRepository userRepository;
 
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    public void getAllUsers() {
        userRepository.findAll();
    }
   
}
</syntaxhighlight>
|}
Más beaneket is lehet injektálni, melyeket kollaborátoroknak hívják. Több lehetséges jelölt esetén konfigurálni kell, hogy melyiket szeretnénk injektálni.


=== Milyen élettartama lehet egy springes beannek? ===
=== Milyen élettartama lehet egy springes beannek? ===
...
{| class="wikitable"
|+Scope-ok a leghosszabbtól a legrövidebb életűig
!típus
!annotáció
!minek az életciklusához van kötve
|-
|singleton
|''– (ez az alapértelmezett)''
|semminek, csak egy van belőle az egész alkalmazásban
|-
|application
|<code>@Scope("application")</code>
|<code>ServletContext</code><ref>Webalkalmazásoknál használatos.</ref>
|-
|prototype
|<code>@Scope("prototype")</code>
|új példány jön létre minden <code>getBean()</code> (<code>@Autowired</code>) hívásra
|-
|websocket
|<code>@Scope(scopeName="websocket", proxyMode=...)</code>
|<code>WebSocket</code> session
|-
|session
|<code>@Scope("session")</code>
|HTTP session
|-
|request
|<code>@Scope("request")</code>
|HTTP-kérés
|}


=== Hogyan könnyíti meg a JPA használatát a Spring Data JPA? ===
=== Hogyan könnyíti meg a JPA használatát a Spring Data JPA? ===
1 142. sor: 1 236. sor:
=== Ismertesd az alábbi microservice tervezési minták céljait, azok előnyeit, hátrányait! ===
=== Ismertesd az alábbi microservice tervezési minták céljait, azok előnyeit, hátrányait! ===
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+összehasonlítás
|+Összehasonlítás
!tervezési minta
!tervezési minta
!leírása
!leírása