# Objekte Massenhaft ;) Wie Objekte und Relationen verwalten?



## stephanbiegel (12. Feb 2007)

Hallo erstmal,

Ich beschäftige mich jetzt seit einem halben Jahr mit Java.

Hab meine ersten kleineren Anwendungen geschrieben und möchte jetzt mit einem größeren Projekt loslegen.

Dazu hätte ich einige grundlegende Fragen die mich noch beschäftigen.

1. Objektverwaltung:

Das Programm soll Szenen verwalten die an einem Ort spielen und an der mehrere Personen teilnehmen.

Also je ein Objekt Szenen, Ort und Person angelegt.

Wie organisiere ich jetzt das am besten was das speichern der verschiedenen Objekte und dehren Beziehung zueinander angeht.
Hab mir gedacht ich mach noch je drei Objekte Szenenspeicher,Personenspeicher,Ortspeicher die jeh eine Collection 
enthaltenlt die dann die einzelnen Objekte aufnimmt.

Habe mir überlegt den Typ HashMap zu nehmen und zu jedem Objekt eine eindeutige id in Form (int) zu vergeben.
Damit wenn ich ein Objekt lösche nicht alle relationen in den anderen Objekten geändert werden müssen.


So wie man das ja auch bei Datenbanken macht mit der ID.

Wie und wo speichere ich jetzt die relationen der Objekte.

In einem extra objekt oder einfach eine array in die Objekte rein die dann die IDs der anderen enthalten?

Wenn jemand einen Link hat der sich mit dem Thema beschäftig währe schön.

Sowas muss doch in größeren Programmen dauernd gebraucht werden und es muss doch dann dafür einen Weg geben der sich als Praktikabel erwiesen hat.



2. Giebt es irgendwo eine Übersicht oder kann mir das eventuell jemand mal erklären welche Collection für was am besten geeignet ist? Prazisbezogen meine ich? 

Danke schonmal für die vielen schlauen Antworten auf meine blöden Fragen


----------



## Eriol (12. Feb 2007)

www.hibernate.org

die geilste objektpersistenz die es für java gibt


----------



## AlArenal (12. Feb 2007)

Eriol hat gesagt.:
			
		

> www.hibernate.org
> 
> die geilste objektpersistenz die es für java gibt



Naja, da gehen die Meinungen je nach Einsatzfeld auseinander. Es gibt Unmengen verschiedener OR-Libs und mitnichten kann man stets nach "one size fits all" verfahren. Hier lohnt sich das Stöbern und austesten diverser Lösungen.

Und ob es für einen Java-Neuling anzuraten ist sich gleich mit einem Monster wie Hibernate zu beschäftigen? Hm...


----------



## Eriol (12. Feb 2007)

ok, ich korrigiere... wie ich finde die geilste objektpersistenz, die es für java gibt 
und java-neuling... naja ein halbes jahr ist ja nicht wirklich neuling, je nach dem wie man sich damit beschäftigt und ich bin davon überzugt, dass es andre OR-Libs gibt, nur kenne ich sie nicht und kann sie somit nicht empfehlen :roll: bin immer offen für neues, also her mit den links


----------



## Saxony (14. Feb 2007)

Hallo,

wie wäre es denn wenn du alles in eine Art "World-Objekt" reinpackst und dieses dann erst einmal als File speichert. Siehe dazu Interface Serializable und ObjectOutputStream/ObjectInputStream. Damit spartse dir erst einmal Objekt/Relationales Mapping. Falls du aber doch gleich alles in eine DB rein kloppen willst, kannste dir auch mal JDO anguggen.
bye Saxony


----------



## stephanbiegel (16. Feb 2007)

Von Stephan:

Danke für die vielen Antworten.

Leider wurde ich misverstanden 

Es ging mir darum wie ich Objekte in Relationen bringe. Also im Speicher und nicht auf ein Medium oder eine Datenbank schreibe.

Natürlich mache ich das Mit direkten Objektreferenzen wie ich jetzt weis. Hab da auf dem Schlauch gestanden 

Habe jetzt ein Datenobjekt in einer Eigenen klasse das mit verschiedene Objektspeicher erstellt die je eine Collection Vector enthalten. Dann noch die verschiedenen Objekte für Personen, Orte und Szenen definiert und in den Speichern eine Methode die mir ein neues objekt mach und dann in den Speicher einfügt.

Szenenspeicher.add_szene( init werte...)
{
Blub(vector) = new szene( werte... );
}

Die Szenen,Personen und Ort objekte haben ihrerseits wieder eine Collection in die ich dann Referenzen zu den anderen typen speichere und zugehörige Methoden die das übernehmen.

Szenenspeicher.link_persone();

Hibernate  ist übrigens meiner Meinung auch erste Wahl wenn es um die Speicherung von Objekten in eine Rationale Datenbank geht. SAP nutzt das Framwork auch in ihren Programme.

Wobei mir eine ordentliche aktive Objektorientierte Datenbank lieber währe. Aber da giebts irgendwie noch nix wirklich gutest (günsitges sprich freies) finde ich.


----------



## Spacerat (16. Feb 2007)

Im vergangenen halben Jahr habe ich mich auch diesbezüglich schon soeiniges gefragt. Hört sich an, als möchtest du eine 3D-Engine bauen. Bei meinen Recherchen bin ich dabei auf die NeHe-Tutorials für OpenGL gestossen (Code vorzugsweise in CPP aber auch für Java mit JOGL-Extension zu haben). Und wenn man die durch hat, fällt einem eine derartige OR-Lib nicht mehr allzu schwer. Leider gibt es dafür (afaik) kein allgemeines Rezept. Im Prinzip ist soetwas aber stets mit 'ner Datenbank zu vergleichen.

cu Spacerat


----------

