bg_image
header

Entity Manager

Ein Entity Manager ist ein zentraler Bestandteil von ORM-Frameworks (Object-Relational Mapping), vor allem im Zusammenhang mit Java (JPA – Java Persistence API), aber auch in anderen Sprachen wie PHP (Doctrine ORM).

Hier ist eine verständliche Erklärung:


💡 Definition:

Ein Entity Manager ist eine Komponente, die sich um die Verwaltung von Datenbank-Entities (also Objekten/Datensätzen) kümmert. Er bildet die Schnittstelle zwischen der objektorientierten Welt des Codes und der relationalen Welt der Datenbank.


📦 Aufgaben eines Entity Managers:

  1. Persistieren (Speichern):

    • Speichert ein neues Objekt (Entity) in der Datenbank.

    • Beispiel: $entityManager->persist($user);

  2. Finden/Laden:

    • Holt ein Objekt anhand seiner ID oder anderer Kriterien.

    • Beispiel: $entityManager->find(User::class, 1);

  3. Aktualisieren:

    • Änderungen an einem Objekt werden verfolgt und in die Datenbank geschrieben (z. B. beim flush()).

  4. Entfernen/Löschen:

    • Löscht ein Objekt aus der Datenbank.

    • Beispiel: $entityManager->remove($user);

  5. Transaktionen verwalten:

    • Beginnt, commitet oder rollt Transaktionen zurück.

  6. Query-Handling:


🔁 Lebenszyklus von Entities:

Der Entity Manager verwaltet den „Zustand“ von Objekten:

  • managed (verfolgt Änderungen),

  • detached (nicht mehr verwaltet),

  • removed (zum Löschen markiert),

  • new (noch nicht gespeichert).


🛠 Beispiel mit Doctrine (PHP):

$user = new User();
$user->setName('Max Mustermann');

$entityManager->persist($user); // Zum Speichern vormerken
$entityManager->flush();        // Tatsächlich in DB schreiben

Fazit:

Der Entity Manager ist der zentrale Ansprechpartner, wenn es darum geht, mit Datenbankobjekten zu arbeiten – lesen, schreiben, ändern, löschen. Er abstrahiert die SQL-Ebene und macht die Datenbankarbeit objektorientiert steuerbar.


Entity Header

Entity-Header sind HTTP-Header, die Informationen über den Hauptteil (Body) einer Nachricht enthalten. Sie können sowohl in Anfragen als auch in Antworten vorkommen und beschreiben Eigenschaften des Inhalts, wie Typ, Länge, Kodierung oder letzte Änderung.

Wichtige Entity-Header:

1. Content-Type

  • Gibt den Medientyp (MIME-Typ) des Inhalts an.
  • Beispiel:
Content-Type: application/json; charset=UTF-8

2. Content-Length

  • Gibt die Größe des Inhalts in Bytes an.
  • Beispiel:
Content-Length: 1024

3. Content-Encoding

  • Zeigt an, ob der Inhalt komprimiert wurde (z. B. gzip).
  • Beispiel:
Content-Encoding: gzip

4. Content-Language

  • Gibt die Sprache des Inhalts an.
  • Beispiel:
Content-Language: de-DE

5. Cache-Location

  • Zeigt die URL oder den Speicherort der eigentlichen Ressource an.
  • Beispiel:
Content-Location: /files/document.pdf

6. Last-Modified

  • Gibt an, wann der Inhalt zuletzt geändert wurde.
  • Beispiel:
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT

7. ETag

  • Eine eindeutige Kennung für eine Version der Ressource, nützlich für Caching.
  • Beispiel:
ETag: "abc123xyz"

8. Expires

  • Gibt an, wann der Inhalt als veraltet gilt.
  • Beispiel:
Expires: Fri, 02 Feb 2025 12:00:00 GMT

9. Allow

  • Listet die erlaubten HTTP-Methoden für eine Ressource auf.
  • Beispiel:
Allow: GET, POST, HEAD

10. Refresh (Nicht standardisiert, aber oft verwendet)

  • Weist den Browser an, die Seite nach einer bestimmten Zeit neu zu laden.
  • Beispiel:
Refresh: 10; url=https://example.com

Diese Header helfen dabei, den Inhalt einer HTTP-Nachricht genau zu beschreiben, Caching-Strategien zu optimieren und die korrekte Darstellung sicherzustellen.

 


Entity

Eine Entity ist ein zentrales Konzept im Bereich der Softwareentwicklung, insbesondere im Domain-Driven Design (DDD). Es beschreibt ein Objekt oder einen Datensatz, der eine eindeutige Identität besitzt und im Laufe der Zeit seinen Zustand ändern kann. Die Identität einer Entity bleibt dabei immer bestehen, unabhängig davon, wie sich die Eigenschaften der Entity verändern.

Eigenschaften einer Entity:

  1. Eindeutige Identität: Jede Entity hat eine eindeutige Kennung (z.B. eine ID), die sie von anderen Entities unterscheidet. Diese Identität ist das primäre Unterscheidungsmerkmal und bleibt über den gesamten Lebenszyklus der Entity gleich.

  2. Veränderlicher Zustand: Im Gegensatz zu einem Value Object kann sich der Zustand einer Entity ändern. Zum Beispiel können sich die Eigenschaften eines Kunden (Name, Adresse) ändern, aber der Kunde bleibt durch seine Identität immer derselbe.

  3. Geschäftslogik: Entities enthalten oft Geschäftslogik, die mit ihrem Verhalten und Zustand in der Domäne zusammenhängt.

Beispiel für eine Entity:

Stellen wir uns eine Kunden-Entity in einem E-Commerce-System vor. Diese Entity könnte folgende Eigenschaften haben:

  • ID: 12345 (die eindeutige Identität des Kunden)
  • Name: John Doe
  • Adresse: Musterstraße 1, 12345 Stadt

Wenn sich die Adresse oder der Name des Kunden ändert, bleibt die Entity durch ihre ID immer derselbe Kunde. Das ist der wesentliche Unterschied zu einem Value Object, das keine dauerhafte Identität hat.

Entity in der Praxis:

Entities werden oft in Datenbanken durch Tabellen abgebildet, wobei die eindeutige Identität in Form eines Primärschlüssels gespeichert wird. In einem Objektmodell einer Programmiersprache wird die Entity durch eine Klasse oder ein Objekt dargestellt, das die Logik und den Zustand dieser Entität verwaltet.