Hibernate: Datenobjekt mit einem dynamischen Tabellennamen nach Anmerkungen

8

Ich habe eine Datenklasse für Hibernate, die einer Tabelle zugeordnet ist. Stellen Sie sich die Entität Person so vor:

%Vor%

Ich muss historische Tabellen nach Jahren dieser Tabelle erstellen : Person2010, Person2011, Person2012 ... Ist es möglich, ohne neue Datenobjekte zu erstellen? Vielleicht durch einen Parameter ...? Ich weiß es nicht.

Die Entity-Klasse ist dieselbe und ändert den Tabellennamen und den Konstruktor.

    
ganzux 20.12.2011, 09:43
quelle

6 Antworten

18

Eine andere Architektur, komplizierter aber elegant:

YES , Sie können die Tabellennamen mithilfe von NamingStrategies ändern:

%Vor%

Und wenn Sie die _year -Tabellen verwenden möchten, müssen Sie eine Sitzung mit Hibernate erstellen, die die Tabellennamen überschreibt:

%Vor%

Für meine Architektur erstelle ich eine Sitzung nach Jahr und speichere sie in der Anwendungszuordnung für den Zugriff, wenn ich sie brauche.

Danke.

    
ganzux 02.01.2012, 15:57
quelle
3

Sie sollten Hibernate Envers für historische Daten ausprobieren.

    
tobiasbayer 20.12.2011 09:49
quelle
1

In Hibernate ordnen Sie 1 Klasse einer Tabelle zu. Sie können dieselbe Entität nicht für die dynamische Zuordnung mehrerer Tabellen verwenden.

Hibernate Envers ist eine ziemlich gute Lösung für historische Daten, aber Sie werden immer noch nicht in der Lage sein zu tun, was Sie versuchen (dynamisch Erhöhen Sie die Anzahl der Tabellen, ohne Mapper Entities zu berühren.)

    
edutesoy 20.12.2011 09:56
quelle
1

Dank @CodeBrickie und @edutesoey habe ich Envers gefunden.

Ich konfiguriere die Hibernate-Konfigurationsdatei mit dem AUD-Suffix und erstelle neue Hibernate-Konfigurationsdateien pro Jahr (hibernate.cfg.2009.xml, hibernate.cfg.2010.xml, hibernate.cfg.2011.xml ...) mit das Jahr-Suffix.

Wenn ich Daten speichere, wird immer in AUD-Tabelle geprüft. Am 1. Januar automatisch:

  • _AUD TABLE wurde in _PAST_YEAR-Tabelle umbenannt.
  • Eine neue _AUD-Tabelle wird erstellt.
  • Eine neue Datei hibernate.cfg.past_year.xml wird mit dem neuen Suffix erstellt.

Wenn ich Daten abrufen muss, lade ich die entsprechende Hibernate-Konfigurationsdatei.

Hoffe das hilft anderen:)

    
ganzux 26.12.2011 12:50
quelle
1
%Vor%

In der obigen Annotation kann Dateiname als Parameter übergeben werden, zB

%Vor%     
praveen 09.02.2012 08:19
quelle
0

Modifiziert zur Laufzeit (ich denke es ist der beste Weg):

%Vor%     
helloworld1970 17.04.2017 07:59
quelle

Tags und Links