Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
Objektrelationale Abbildung – Wikipedia Zum Inhalt springen

Objektrelationale Abbildung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Objektrelationales Mapping)

Objektrelationale Abbildung ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}, ORM) ist eine Technik der Softwareentwicklung, mit der ein in einer objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine Objekte in einer relationalen Datenbank ablegen kann. Dem Programm erscheint die Datenbank dann als objektorientierte Datenbank, was die Programmierung erleichtert. Implementiert wird diese Technik normalerweise mit Klassenbibliotheken, wie beispielsweise Entity Framework für .Net-Framework-/.NET-Programmiersprachen, Hibernate für die Programmiersprache Java, Doctrine für PHP, SQLAlchemy für Python, Active Record für Ruby oder Diesel für Rust. Für Java gibt es auch eine standardisierte Schnittstelle, die Jakarta Persistence API.

Prinzip

Objektorientierte Programmiersprachen (OOP) kapseln Daten und Verhalten in Objekten, hingegen legen relationale Datenbanken Daten in Tabellen ab. Die beiden Paradigmen sind grundlegend verschieden. So kapseln Objekte ihren Zustand und ihr Verhalten hinter einer Schnittstelle und haben eine eindeutige Identität. Relationale Datenbanken basieren dagegen auf dem mathematischen Konzept der relationalen Algebra. Dieser konzeptionelle Widerspruch wurde in den 1990er Jahren als object-relational impedance mismatch bekannt.<ref name="RDMDBobjectmis">{{#if:2018-01-22|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Ted Neward|Ted Neward: }}{{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C{{#if:The Vietnam of Computer Science|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1=https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=The Vietnam of Computer Science}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=The Vietnam of Computer Science}}}}|[{{#invoke:URLutil|getNormalized|1=http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=The Vietnam of Computer Science}}}}]}}{{#if:| ({{{format}}}{{#if:1Interoperability Happens2006-06-26https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}

          | )
          | {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}%7C%7C}}}}{{#if:The Vietnam of Computer Science|{{#if:{{#invoke:WLink|isValidLinktext|1=The Vietnam of Computer Science|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: Interoperability Happens| Interoperability Happens{{#if: 2006-06-26https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C,%7C{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: 2006-06-26| {{#if:{{#invoke:DateTime|format|2006-06-26|noerror=1}}
            |{{#invoke:DateTime|format|2006-06-26|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2006-06-26|class=Zitationswartung}} }}{{#if: https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C,%7C{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C,%7C{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C+{{#if:2006-06-26Interoperability Happens|{{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7Carchiviert%7Cehemals}}%7C{{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7CArchiviert%7CEhemals}}}}+{{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7Cvom%7Cim}}+Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|1}}| (nicht mehr online verfügbar)}}{{#if: 2018-01-22| am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|2018-01-22{{#if:1150852||(?)}}}}}}{{#if: 2010-06-02|;}}}}{{#if: 2010-06-02| {{#if:2006-06-26Interoperability Happenshttps://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx{{#invoke:TemplUtl%7Cfaculty%7C1}}%7Cabgerufen%7CAbgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2010-06-02 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2010-06-02|class=Zitationswartung}} }} {{#invoke:DateTime|format|2010-06-02|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:1Interoperability Happens2006-06-26https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:en|en|de}}|de||
          {{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2006-06-26https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx{{#if: 2010-06-02 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|1}}|{{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7C%7C{{#ifeq: 1 | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
       | {{#if:  | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
      | {{#if:{{#invoke:URLutil|isWebURL|http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
       | {{#if:{{#invoke:URLutil|isWebURL|http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
       | {{#if:  | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
      | {{#if:{{#invoke:URLutil|isWebURL|http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
       | {{#if:{{#invoke:URLutil|isWebURL|http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:https://web.archive.org/web/20180122225729/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx%7CVorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>

Um den Widerspruch aufzulösen oder zumindest zu mildern, wurden verschiedene Lösungen vorgeschlagen, beispielsweise objektorientierte Datenbanken oder die Erweiterung von Programmiersprachen um relationale Konzepte (z. B. Embedded SQL). Die direkte objektrelationale Abbildung von Objekten auf Relationen hat den Vorteil, dass einerseits die Programmiersprache selbst nicht erweitert werden muss und andererseits relationale Datenbanken als etablierte Technik in allen Umgebungen als ausgereifte Software verfügbar sind. Nachteil dieses dem OOP-Paradigma entgegenkommenden Ansatzes ist, dass die Stärken und Fähigkeiten von relationalen Datenbanken teilweise nicht genutzt werden, was sich in suboptimaler Leistung niederschlagen kann.

Grundlegende Techniken

Im einfachsten Fall werden Klassen auf Tabellen abgebildet, jedes Objekt entspricht einer Tabellenzeile und für jedes Attribut wird eine Tabellenspalte reserviert. Die Identität eines Objekts entspricht dem Primärschlüssel der Tabelle. Hat ein Objekt eine Referenz auf ein anderes Objekt, so kann diese mit einer Fremdschlüssel-Primärschlüssel-Beziehung in der Datenbank dargestellt werden.

Der Begriff Shadow Information („Schatteninformation“) bezeichnet zusätzliche Daten, die ein Objekt benötigt, um persistent abgelegt zu werden.<ref name="Ambler.228-229" /> Dazu gehören Primärschlüssel – speziell wenn es sich um Surrogatschlüssel ohne fachliche Bedeutung handelt – sowie Hilfsdaten für die Zugriffssteuerung, beispielsweise Zeitstempel.

Abbildung von Vererbungshierarchien

Datei:Single Table Inheritance.svg
Tabelle pro Vererbungshierarchie
Datei:Class Table Inheritance.svg
Tabelle pro Unterklasse
Datei:Concrete Table Inheritance.svg
Tabelle pro konkrete Klasse

Es gibt im Wesentlichen drei verschiedene Verfahren, um Vererbungshierarchien auf Datenbanktabellen abzubilden. Einige Frameworks bieten weitere Variationen und Vermischungen dieser drei Grundverfahren.<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:|{{#if:Chapter 10. Inheritance Mapping|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Chapter 10. Inheritance Mapping}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Chapter 10. Inheritance Mapping}}}}|[{{#invoke:URLutil|getNormalized|1=http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Chapter 10. Inheritance Mapping}}}}]}}{{#if:| ({{{format}}}{{#if:Hibernate Reference DocumentationRed Hat Middleware, LLC2012{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}

          | )
          | {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}}%7C%7C}}}}{{#if:Chapter 10. Inheritance Mapping|{{#if:{{#invoke:WLink|isValidLinktext|1=Chapter 10. Inheritance Mapping|lines=0}}||}}}}{{#if: Hibernate Reference Documentation| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Hibernate Reference Documentation}}}}{{#if: Red Hat Middleware, LLC| Red Hat Middleware, LLC{{#if: 2012|,|{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: 2012| {{#if:{{#invoke:DateTime|format|2012|noerror=1}}
            |{{#invoke:DateTime|format|2012|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2012|class=Zitationswartung}} }}{{#if: |,|{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:2012Red Hat Middleware, LLC|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:1150852||(?)}}}}}}{{#if: 2012-07-31|;}}}}{{#if: 2012-07-31| {{#if:2012Red Hat Middleware, LLC{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2012-07-31 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2012-07-31|class=Zitationswartung}} }} {{#invoke:DateTime|format|2012-07-31|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:Hibernate Reference DocumentationRed Hat Middleware, LLC2012{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:en|en|de}}|de||
          {{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2012{{#if: 2012-07-31 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
       | {{#if:  | [3] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
      | {{#if:{{#invoke:URLutil|isWebURL|http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
       | {{#if:{{#invoke:URLutil|isWebURL|http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
       | {{#if:  | [4] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
      | {{#if:{{#invoke:URLutil|isWebURL|http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html
       | {{#if:{{#invoke:URLutil|isWebURL|http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>

Tabelle pro Vererbungshierarchie<ref name="PoEAA" />
(auch {{#invoke:Vorlage:lang|flat}}, einzelne Tabelle) Bei diesem Verfahren werden alle Attribute der Basisklasse und aller davon abgeleiteten Klassen in einer gemeinsamen Tabelle gespeichert. Zusätzlich wird ein sogenannter „Diskriminator“ in einer weiteren Spalte abgelegt, der festlegt, welcher Klasse das in dieser Zeile gespeicherte Objekt angehört. Attribute von abgeleiteten Klassen dürfen bei diesem Ansatz aber in den meisten Fällen nicht mit einem NOT-NULL-Constraint versehen werden. Außerdem können Beschränkungen der Anzahl erlaubter Spalten pro Tabelle diesen Ansatz bei großen Klassen bzw. Klassenhierarchien vereiteln.
Tabelle pro Unterklasse<ref name="PoEAA" />
(auch Joined oder {{#invoke:Vorlage:lang|flat}}) Bei diesem Verfahren wird eine Tabelle für die Basisklasse angelegt und für jede davon abgeleitete Unterklasse eine weitere Tabelle. Ein Diskriminator wird nicht benötigt, weil die Klasse eines Objekts durch eine 1-zu-1-Beziehung zwischen dem Eintrag in der Tabelle der Basisklasse und einem Eintrag in einer der Tabellen der abgeleiteten Klassen festgelegt ist.
Tabelle pro konkrete Klasse<ref name="PoEAA" />
(auch Table per Class oder {{#invoke:Vorlage:lang|flat}}) Hier werden die Attribute der abstrakten Basisklasse in die Tabellen für die konkreten Unterklassen mit aufgenommen. Die Tabelle für die Basisklasse entfällt. Der Nachteil dieses Ansatzes besteht darin, dass es nicht möglich ist, mit einer Abfrage Instanzen verschiedener Klassen zu ermitteln.

Ein weiteres Verfahren ist die Abbildung von Strukturen (Beziehungen, Vererbung) und Daten in generellen Tabellen {{#invoke:Vorlage:lang|flat}}. Dabei enthält die gesamte Datenbank genau 5 Tabellen: Eine für Klassen, eine für Beziehungen (einschließlich Vererbungsbeziehungen), eine für Attribute, eine für Instanzen (der Klassen) und eine für Werte (der Attribute).<ref>Map Classes To A Generic Table Structure</ref> Dieses Verfahren hat allerdings in der Praxis kaum Bedeutung.

Literatur

  • {{#invoke:Vorlage:Literatur|f}}

Einzelnachweise

<references> <ref name="Ambler.228-229"> {{#invoke:Vorlage:Literatur|f}} </ref> <ref name="PoEAA"> {{#invoke:Vorlage:Literatur|f}} </ref> </references>