Πέμπτη 29 Απριλίου 2010

Χρήση των JPA annotations αντι για database triggers

Μια πολύ χρήσιμη δυνατότητα στον κόσμο των βάσεων δεδομένων ειναι αυτή του ορισμού triggers (σκανδαλιστές όπως του μεταφράζουν στα ελληνικα..). Οι triggers είναι κομμάτια κώδικα που εκτελούνται όταν συμβεί κάποια μεταβολή σε κάποια εγγραφή κάποιου πίνακα. Ένα παράδειγμα trigger θα μπορούσε να είναι "προσθήκη ποσού στον τραπεζικό λογαριασμό, όταν γίνεται προσθήκη νέας κατάθεσης".
Οι Java developers προσπαθούν με διάφορους τρόπους να επιτύχουν την μεταφορά αυτής της λειτουργίας και στον κόσμο του αντικειμενοστραφούς προγραμματισμού. Προσωπικά έχω δει λύσεις όπως χρήση "επιθεωρητή", δηλαδή κλάσεως που υλοποιεί συγκεκριμένες μεθόδους που καλούνται όταν ο χρήστης κάνει καταχώρηση, τροποποιηση ή διαγραφή κάποιας εγγραφής. Επίσης έχω δει την τεχνική του listener, όπου παρακολουθείται η καταχώρηση, τροποποιηση ή διαγραφή εγγραφών ώστε να εκτελεστεί κατάλληλος επιπλέον κώδικας.
Η καλύτερη όμως λύση έρχεται από το πλέον επίσημο αντικειμενοσχεσιακό πρότυπο, το JPA. Η λύση αυτή προτείνει την προσθήκη μεθόδων που έχουν κώδικα που πρέπει να εκτελεστεί πριν ή μετά απο τα διάφορα actions [Load, Persist,Update,Remove]. Το μόνο που χρειάζεται να ορίσει ο προγραμματιστείς ώστε να εκτελεστεί ο κώδικας την κατάλληλη στιγμή είναι ένα από τα ακόλουθα annotations:
@PostLoad, @PrePersist, @PostPersist, @PreUpdate, @PostUpdate, @PreRemove, @PostRemove

Μερικά παραδείγματα μπορείτε να δείτε στο java2s

Δεν υπάρχουν σχόλια:

LinkWithin

Blog Widget by LinkWithin

Mobile edition