Thread Perl OOP (12 answers)
Opened by sid burn at 2006-09-21 19:24

pq
 2006-09-22 19:25
#70150 #70150
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=sid burn,22.09.2006, 16:43]Zum anderen werde ich nachher kein String oder so abspeichern. "$user->duration" soll mir direkt die Dauer aus der Datenbank auslesen. Und wenn ich es als Setter benutze soll der Eintrag in der Datenbank auch direkt verändert werden.[/quote]
oha. sorry, dass ich schon wieder was einzuwenden habe.
bei einem normalen getter ein select auf die datenbank zu machen kann
je nach anwendung *sehr* ineffizient sein.
gerade gestern erlebt. eine klasse bei uns hat eine methode, die eine
reihe von strings zurückliefert. diese sind keine direkten attribute.
beim aufruf dieser methode wird ein select auf die datenbank gemacht.
bis vor kurzen lieferte die methode aber ein direktes attribut.
nun gibt es eine anwendung, die einen export macht und sich,
sagen wir, 100.000 objekte aus der db holt. für jedes objekt holt sich
der export nun noch über die genannte methode die strings.
das sind 100.000 selects extra. der export läuft jetzt doppelt so lange
wie vorher. nicht gut.

dasselbe gilt für store.
ich würde lieber eine methode store implementieren und nicht implizit beim aufruf des setters auf die datenbank gehen. kann dann
auch störend sein, wenn du das mal nicht haben willst.

vielleicht solltest du CPAN:DBIx::Class o.ä. verwenden, da
kann man dann auch angeben, welche attribute immer gleich mit
dem ersten select geholt werden sollen und welche nicht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Perl OOP