Announcement

Collapse
No announcement yet.

Löschen aus der Datenbank

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

  • Löschen aus der Datenbank

    Wir stehen vor einem Problem wie wir unsere Datenbank, die wir jetzt mit CMP Beans bearbeiten und neue Tuppel einfügen können, jetzt diese auch wieder löschen können - und zwar so komfortable und persistent wie nur möglich.

    Welche Möglichkeiten gibt es einen Eintrag aus der Datenbank zu entfernen.

    1. direkt über SQL Statements in einem SessionBean - Problem das wir sehen - Was passiert wenn eine andere Person diesen Eintrag (Bean) verwendet und ich lösche dieses Tuppel heraus.

    Kann man direkt über ein CMP Bean, einen Eintrag (Hier ein Bean) persistent Löschen?

    Hat jemand eine Ahnung?

  • #2
    Hi Hakan,

    > Was passiert wenn eine andere Person diesen Eintrag (Bean) <br>
    > verwendet und ich lösche dieses Tuppel heraus. <br>
    <br>
    Dann fliegt dem Nutzer irgendwann eine Exception um die Ohren, und zwar spätestens beim Zurückspeichern.<br>
    <br>
    > Kann man direkt über ein CMP Bean, einen Eintrag (Hier ein Bean)<br>
    > persistent Löschen? <br>
    <br>
    Jedes Bean hat eine remove()-Methode, meinst Du die?

    c

    Comment


    • #3
      Hi Hakan,

      <code>Was passiert wenn eine andere Person diesen Eintrag (Bean)
      verwendet und ich lösche dieses Tuppel heraus. </code>
      <br>
      Dann fliegt dem Nutzer irgendwann eine Exception um die Ohren, und zwar spätestens beim Zurückspeichern.<br>
      <br>
      <code>
      Kann man direkt über ein CMP Bean, einen Eintrag (Hier ein Bean)
      persistent Löschen? </code>
      <br>
      Jedes Bean hat eine remove()-Methode, meinst Du die?

      c

      Comment


      • #4
        Hallo Thomas!

        Also - wie ich "genau" löschen kann, weiß ich leider nicht.

        Am liebsten wäre mir eine Methode (zb Remove) die den Eintrag in der Datenbank löscht, aber auch alle abhängigen Tabellen, die mit diesem Eintrag in zusammenhang stehen.

        ZB: Resource <-> ResourceServiceMapping <-> Service

        Wenn ich Resource (XY) lösche, sollten alle Einträge der ResourceServiceMapping Tabelle, die XY referenzieren auch gelöscht werden. Und wenn Service Z nur von XY Resource abhängig ist dann sollte im weitesten Falle auch Z gelöscht werden.

        Die Frage ist wie aufwenig ist es dieses Löschen in CMP nachträglich einzubauen, wenn ich 45 Tabellen bearbeiten muß? Und wäre es vielleicht besser das ganze mit einem SQL Statement zu erledigen - und in der Datenbank dann mit Triggern zu arbeiten?

        (der Aufwand für die Erstellung der Beans war 1 Woche) Die CMP beinhalten allerdings keine Methoden Köpfe für Remove etc. - Nur create und findby Methoden sind im Home Interface definiert.

        Was meinst du

        Comment


        • #5
          Hi Hakan,

          wir bauen um unsere Entities immer Session-Objekte drumherum. Die enthalten die eigentliche Anwendungslogik, während die Entities wirklich nur die dumme Datenbank repräsentieren.

          Wenn wir jetzt also das Problem haben, etwa eine Stückliste mit allen Referenzen zu Teilen, Dokumenten und dem Auftrag zu löschen, machen wir das dort in einer Methode. Denn die Referenzen sollen ja nicht physisch gelöscht werden, dann würden der Auftrag und die Teile/Dokumente ja verloren sein.

          cu

          Thoma

          Comment


          • #6
            Hi Hakan,<br>
            Schau Dir mal das Beispiel "pigs" bei BAS/IAS an. Dort ist genau beschrieben, wie man M zu N Relationen händelt, so auch das Löschen. Es bietet sich an dafür SLSB zu nehmen, die die Logik kapseln. Aber m.E. hängt die Funktionalität, daß dies auch möglich ist, einzig am Design der Entity Beans und dort in den "Findern", die die Where-Klauseln deskriptiv im Deployment descriptor haben.

            Gruß Michae

            Comment

            Working...
            X