Announcement

Collapse
No announcement yet.

JPA EntitiyManger

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JPA EntitiyManger

    hallo zusammen,

    ich habe eine allgemeine Frage zum Ablauf von JPA. Der EntityManger verwaltet ja alle Objekte die persistiert werden. Lädt sich der EntityManger alle Objekte aus der Datenbank in den ARbeitsspeicherung bei seiner Instanziierung oder werden die Objekte aus der Datenbank nach Anforderung (find-Methode) jeweils aus der DB geladen. Ich vermute dass mit seiner Instanziierung alle Objekte aus der DB in den Arbeitsspeicher geladen werden. Ist das richtig?

    Danke.

  • #2
    a) es könnte mehrere Manager geben zu verschiedenen Datenbanken
    b) eine DB mit bsp. 15 Mio Datensätzen würde dann sofort im Speicher landen?

    Der Manager hat einen Cache und du kannst eigene Caches dazuschalten.
    Christian

    Comment


    • #3
      Mit einer Find-Operationen findet also eine Anfrage auf die Datenbank statt, eh sei denn der Entity Manager hat die Objekte noch im Cache.
      Mit der Instanziierung werden also nicht alle Objekte geladen.

      Was gibt die Find-Methode dann zurück. Eine Kopie des Objektes? Eine Referenz dann ja wahrscheinlich nicht?

      Comment


      • #4
        Mit der Instanziierung werden also nicht alle Objekte geladen.
        Hängt davon ab -> lazyloading

        Was gibt die Find-Methode dann zurück. Eine Kopie des Objektes? Eine Referenz dann ja wahrscheinlich nicht?
        Verstehe ich nicht. Kopie von was? In Java gibt es grundsätzlich nur Referenzen. Beim laden aus der DB wird ein Objekt angelegt, das bekommst du. Hibernate legt intern Proxyobjekte an. Das ist aber unwesentlich
        Christian

        Comment


        • #5
          Mir geht es um die Verwendung bzw. den Zugriff der geladenen Objekte innerhalb der Anwendung.

          Ich lade zu Beginn alle Objekte aus der DB und packe diese beispielsweise in eine Liste.

          Wenn ich jetzt ein bestimmtes Objekt aus dieser Liste benutzen möchte, sollte ich dann selbst das entsprechende Objekt aus dieser Liste suchen (iterieren und vergleichen) oder sollte ich einfach die Methode find vom EntityManager benutzen.

          Comment


          • #6
            Ich lade zu Beginn alle Objekte aus der DB und packe diese beispielsweise in eine Liste.
            Wenn es nötig ist...

            oder sollte ich einfach die Methode find vom EntityManager benutzen.
            Das führt ggf. zu einem neuen DB-Zugriff
            Christian

            Comment


            • #7
              Das führt ggf. zu einem neuen DB-Zugriff
              das wollte ich hören. Danke.

              Comment

              Working...
              X