Joe Kinley Geschrieben 13. April 2007 Geschrieben 13. April 2007 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. Zitieren
kingofbrain Geschrieben 13. April 2007 Geschrieben 13. April 2007 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 Zitieren
Jaraz Geschrieben 13. April 2007 Geschrieben 13. April 2007 Hi, kann man, sollte man aber nicht. Du vermischt dann nämlich Persistence- und Applikationslogik. Gruß Jaraz Zitieren
kingofbrain Geschrieben 13. April 2007 Geschrieben 13. April 2007 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 Zitieren
Jaraz Geschrieben 14. April 2007 Geschrieben 14. April 2007 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 Zitieren
kingofbrain Geschrieben 14. April 2007 Geschrieben 14. April 2007 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 Zitieren
Oortael Geschrieben 18. Mai 2007 Geschrieben 18. Mai 2007 Kennt Ihr gute deutsche Bücher zur Einarbeitung in Hibernate bzw. eine deutsche Version der Reference Documentation? Zitieren
perdian Geschrieben 18. Mai 2007 Geschrieben 18. Mai 2007 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! Zitieren
Oortael Geschrieben 19. Mai 2007 Geschrieben 19. Mai 2007 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.