Veröffentlicht 13. April 200718 j Hi Leute, ich frage mich ob ein Hibernate Pojo zwingend nur reine Datenhaltung sein darf, also nur Felder und Getter/Setter, oder darf es auch beliebige weitere Funktionen halten. Gemapped wird schliesslich ja nur in den Config XMLs. Also darf es weitere Funktionen halten oder nicht? Und kann die Klasse auch Felder halten die nicht persistent sind? Ich hoff da weiss einer bescheid. Denn in meinem Buch, und der Doku hab ich garnichts dazu gefunden.
13. April 200718 j Servus, ja und ja. Du darfst natürlich weitere Methoden in Deinem POJO definieren. Und Du kannst auch transiente Felder definieren. Bei Hibernate3 gibst Du dazu einfach die Annotation @Transient an, bei Hibernate2 sollte es dafür in der hbm.xml eine entsprechende Möglichkeit geben. Ich finde die Online-Doku auf hibernate.org - Hibernate ganz hilfreich. Schöne Grüße, Peter
13. April 200718 j Hi, kann man, sollte man aber nicht. Du vermischt dann nämlich Persistence- und Applikationslogik. Gruß Jaraz
13. April 200718 j Hallo Jaraz, da wage ich zu widersprechen. Man sollte es nicht tun, wenn man wirklich Anwendungslogik in diese Klassen packen will. Aber das Verhalten eines persistenten POJOs existiert schon. Und das kann z.B. eine Wertebereichsüberprüfung oder das simple überschreiben der toString()-Methode sein. Diese sollten und müssen natürlich im Hibernate POJO implementiert werden. Business-Logik hat hier nichts verloren, das gehört in die Business-Schicht. Ich habe deshalb auch meinen Beitrag vor dem abschicken noch einmal überarbeitet, da ich statt "Methoden" Business-Logik geschrieben habe. Danke für den Hinweis. Peter
14. April 200718 j Natürlich gibt es sinnvolle Methoden in Hibernate POJOs die nicht getter oder setter Methoden sind. Das Überschreiben von equals und hashCode ist in vielen Fällen sogar zwingend notwendig. Wenn man aber anfängt mit @Transient getter Methoden auszuschließen, kommt man schnell in den Bereich der Vermischung. Werteüberprüfungen gehören für mich z.B. nicht unbedingt in die Persistenz Klassen. Gruß Jaraz
14. April 200718 j Servus nochmal, das @Transient verwende ich persönlich eigentlich nur für die Eigenschaft serialVersionUID, die ich nicht in der Datenbank haben will, die bei Serializable Objekten (das sind meine Hibernate POJOs natürlich immer) aber guter Stil ist. Du hast aber Recht, man sollte sich überlegen, ob man Werte wirklich als transient markieren will, oder ob evtl. das Objektmodell zu überdenken ist. Schönes Wochenende, Peter
18. Mai 200718 j Kennt Ihr gute deutsche Bücher zur Einarbeitung in Hibernate bzw. eine deutsche Version der Reference Documentation?
18. Mai 200718 j das @Transient verwende ich persönlich eigentlich nur für die Eigenschaft serialVersionUID, die ich nicht in der Datenbank haben willserialVersionUID ist doch eh static und wird daher überhaupt nicht als Property herangezogen. kennt Ihr gute deutsche Bücher zur Einarbeitung in Hibernate bzw. eine deutsche Version der Reference Documentation?Das wohl beste und umfangreichste Buch: http://www.manning.com/bauer2/. Was deutsche Dokus angeht: Da dürftest du immer Schwierigkeiten haben. Selbst wenn es irgendwo Übersetzungen gibt sind diese in der Regel nur für ältere Versionen wirklich zutreffend und komplett. Eigentlich wie überall in der IT: Englisch ist das Maß der Dinge!
19. Mai 200718 j Was deutsche Dokus angeht: Da dürftest du immer Schwierigkeiten haben. Selbst wenn es irgendwo Übersetzungen gibt sind diese in der Regel nur für ältere Versionen wirklich zutreffend und komplett. Eigentlich wie überall in der IT: Englisch ist das Maß der Dinge! Ich weiß, dauert leider länger, wenn man 329 Seiten auf englisch liest... Danke für den Link. Sowas hab ich gesucht.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.