Domain models and metadata - Fetch plans, strategies and profiles

5 belangrijke vragen over Domain models and metadata - Fetch plans, strategies and profiles

Wanneer wordt de proxy geïnitialiseerd ?

Als we een willekeurige methode op de proxy aanroepen die niet de "identifier getter" is, zullen we de initialisatie van de proxy activeren en de database raadplegen. Als @Id op een veld stond, zou het aanroepen van getId(), net als het aanroepen van elke andere methode, de proxy initialiseren.

Welke klasse kunnen we gebruiken om het type van de proxy te bepalen ?

HibernateProxyHelper

Hoe wordt prefetching with subselects uitgevoerd ?

List<Item> items = em.createQuery("select i from Item i",
➥ Item.class).getResultList();
// select * from ITEM
for (Item item : items) {
assertTrue(item.getBids().size() > 0);
// select * from BID where ITEM_ID in (
// select ID from ITEM
// )

}
Hibernate onthoudt de oorspronkelijke query die werd gebruikt om de items te laden. Vervolgens plaatst het deze oorspronkelijke query (licht aangepast) in een subquery om de collectie van biedingen voor elk item op te halen.
Merk op dat de oorspronkelijke query die opnieuw wordt uitgevoerd als een subquery alleen wordt onthouden door Hibernate voor een specifieke persistentiecontext.
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Hoe declareer je een fetch profile en waar ?

Hibernate-ophaalprofielen zijn globale metagegevens; ze worden gedeclareerd voor de hele persistentie-eenheid. Hoewel we de @FetchProfile-annotatie op een klasse kunnen plaatsen, geven we er de voorkeur aan om deze als pakketniveau-metagegevens in een
package-info.java-bestand te plaatsen:@org.hibernate.annotations.FetchProfiles({
@FetchProfile(name = Item.PROFILE_JOIN_SELLER,
fetchOverrides = @FetchProfile.FetchOverride(
entity = Item.class,
association = "seller",
mode = FetchMode.JOIN
))

Wat betekent de javax.persistence.loadgraph in de properties ?

Dit betekent dat attributen die zijn gespecificeerd door attribuutknopen van de entiteitsgraaf worden behandeld als FetchType.EAGER, en attributen die niet zijn gespecificeerd, worden behandeld volgens hun gespecificeerde of standaard FetchType in de mapping.

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo