-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Vererbung für Archivtabellen
PostPosted: Wed Jul 29, 2009 3:22 am 
Newbie

Joined: Wed Jul 29, 2009 2:54 am
Posts: 1
Hallo zusammen,

ich habe folgende Frage.

Kurz zum Anwendungsfall:
Ich würde gerne in einer Anwendung die Möglichkeit geben aktuelle Daten von nicht mehr aktuellen Daten zu trennen.
Es geht konkret um einen Fragebogen mit 20 Feldern.
Der Benutzer bekommt in der Anwendung eine Möglichkeit angeboten diese Trennung manuell über einen Button zu starten.
Danach steht der Datensatz aus der QUESTIONNAIRE-Tabelle in der QUESTIONNAIRE_ARCHIVE-Tabelle ergänzt um das Archivierungsdatum.
Erwartet werden etwa eine Million Einträge.

Ich habe folgende Tabellen:

QUESTIONNAIRE
QUESTIONNAIRE_ARCHIVE (hier landen die archivierten Fragebögen)

Die Struktur der Tabellen ist folgende (vereinfacht):

int id
varchar2 field_1
varchar2 field_2
...
date archive_date (nur in der Archivtabelle vorhanden)


Meine Klassenstruktur:

Code:
class Questionnaire {

private Long id;
private String field_1;
private String field_2;
...
private String field_10;

//getter und setter sind realisiert
}


Code:
class QuestionnaireArchive extends Questionnaire  {

private Date archiveDate;
//getter und setter sind realisiert

}


Meine Frage ist nun, wie das Hibernate-Mapping aussehen sollte, bzw. wie es optimalerweise sein sollte um im Mapping möglichst keinen redundanten Code zu haben.

Es gibt doch sicher eine bessere Variante als die folgende, bei der man duplizieren müsste.

Code:
<hibernate-mapping>
   <class name="de.test.Questionnaire" table="QUESTIONNAIRE">
       
        <cache usage="read-write"/>
       
        <id name="prjId" column="prj_id">
            <generator class="assigned"/>
        </id>
   <property name="field1" column="field_1"/>
   <property name="field2" column="field_2"/>
            ...
   <property name="field10" column="field_10"/>
      </class>
</hibernate-mapping>


Code:
<hibernate-mapping>
   <class name="de.test.QuestionnaireArchive" table="QUESTIONNAIRE_ARCHIVE">
       
        <cache usage="read-write"/>
       
        <id name="prjId" column="prj_id">
            <generator class="assigned"/>
        </id>
   <property name="field1" column="field_1"/>
   <property name="field2" column="field_2"/>
            ...
   <property name="field10" column="field_10"/>
            <property name="archiveDate" column="archive_date"/>
      </class>
</hibernate-mapping>


Könnte man da auch mit einer der drei Vererbungstrategien von Hibernate arbeiten und wenn ja, wie müsste man das Mapping des Archiv-Objekts modifizieren?
- Table per Concrete Class
- Table per Subclass
- Table per Class Hierarchy (müsste ausscheiden, da ich die Daten ja bewusst auf zwei Tabellen aufteilen möchte)

Besten Dank im Voraus.

Gruß,
Alex


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.