# Design Frage



## Gast (23. Jul 2006)

Hallo,

arbeite gerade an einem kleinen (für mich etwas größeren) Java Web Projekt.

Ein paar grundlegende Informationen

Ich arbeite mit einem Kollegen zusammen und stehen eigentlich gerade am Anfang des Projektes.

Wir haben uns für das Framework Struts entschieden (nicht JSF) da wir uns mit diesem schon ein wenig auskennen und es mehr Tutorials und Hilfestellungen dafür gibt.

Wir möchten als Object2Relational Mapping Hibernate verwenden, was auch bisher in einigen Tests gut geklappt hat. 

Die einzelnen Tabellen der Datenbank stellen wir als sogenannte Business Objects dar die alle nötigen Infos der Entities enthalten.

Soweit ich in Tutorials gesehen habe werden mit Hibernate immer ganze Datensätze ausgelesen d.h. jedes einzelne Feld in einer Reihe und dann auch in das Object geschrieben.

Da ich noch nicht viel Erfahrung mit Hibernate habe komme ich hier zu meiner 1. Frage:
Bedarf es nicht viel Performance um jedes mal, vor allem wenn mehrer Datensätze ausgewählt werden, alle Felder ausgelesen werden? Denn wenn ich in einer .jsp z.B. nur Vor und Nachname von mehreren Personen anzeigen will aber z.B. dessen Adresse nicht dann ist es doch überflüssig den gesamten Datensatz zu selektieren. 
Natürlich möchte ich wenn ich auf eine Person dann klicke die Details sehen aber eben nur von einer Person und dann selektiere ich den gesamten Datensatz.

Und noch eine Frage:
Falls die obere Frage mit nein beantwortet werden kann (d.h. immer gesamte Datensätze auswählen) dann möchte ich euch noch fragen, ob ein Ansatz mit ValueObjects die, wie oben erwähnt, z.B. Beispiel nur Vor und Nachname enthalten (in einer z.B. PersonBasic.java) und weiter auch dann Adresse enthalten (in einer z.B. PersonDetail.java) und dann weiter an den View als Attribut gesendet werden.

Falls ihr bis hier durchgehalten habt: Vielen Dank, falls ihr noch eine Antwort auf meine Fragen habt: Suberb!!


----------



## Gast (23. Jul 2006)

Hallo Leute,

Ich glaube ich kann meine Frage selbst beantworten:
Falls es jemanden interessiert (was ich allerdings n diesem Forum nicht glaube):

Hibernate unterstützt das sogenannte "lazy Fetching/Assocation" Prinzip. Dabei wird erst bei Aufruf der get Methode die Abrage gestartet. Ob sich das jetzt allerdings nur auf Relationships oder auch auf gewöhnliche Felder bezieht hab ich noch nicht herausgefunden.

Glaub aber beides


----------



## Guest (23. Jul 2006)

Jetzt ist alles klar:

Für Properties ginge dies auch aber man müsste vorher irgendwie bytecode generieren, macht man aber in der Regel nicht, nur wenn man hunderte von Spalten hat und das Datenmodel nicht weiter verbesserbar wäre.

Deshalb egal immer ganze datensätze, und bei Relations handlet das eh Hibernate!!


----------

