Loading…

DeciBell: A Novel Approach to Object Relational Mapping Software

Το DeciBell είναι ένα λογισμικό ανοιχτού κώδικα που αναπτύχθηκε στην πρόσπαθεια για μια ενιαία και δομημένη προσέγγιση του προβλήματος συνεργασίας Java και SQL. Με το DeciBell, οι κλάσεις Java μπορούν να συσχετιστούν με οντότητες σχεσιακών β'ασεων δεδομένων, με εξαιρετικά εύκολο και γρήγορο τρόπο και με απόλυτη διαφάνεια ως προς τους μηχανισμούς που λειτουργούν στο παρασκήνιο.

Έτσι, από τη μία, ένας μη πεπειραμένος προγραμματιστής μπορεί να εργαστεί αμιγώς σε Java κώδικα απαλλαγμένο από SQL αλλά και ένας έμπειρος developer μπορεί να εστιάσει την προσοχή του στο πρόβλημα που θέλει να επιλύσει και όχι σε τετριμένα ζητήματα διαχείρισης βάσεων. Σε αντίθεση με άλλα υπάρχοντα λογισμικά του ίδιου αντικειμένου, το DeciBell δεν απαιτεί από το χρήστη να παράσχει αρχεία ρυθμίσεων ή σύνθετους μηχανισμούς ερωτημάτων παρά μόνο να σηματοδοτήσει κατάλληλα συγκεκριμένα πεδία των κλάσεών του. Η σηματοδότηση αυτή επιτυγχάνεται με τη χρήση Annotations που είναι μια σύγρονη τάση στη Java.

 

Περισσότερα στην τοποθεσία: http://github.com/hampos/DeciBell 

Παραθέτουμε ένα απλό παράδειγμα χρήσης του DeciBell για την διαχείριση μιας βάσης δεδομένων που περιλαμβάνει στοιχεία χρηστών και ομάδες χρηστών με επίπεδα πρόσβασης.

 

Υποθέτουμε ότι έχουμε στη διάθεσή μας τις παρακάτω κλάσεις:

class User {
int user_id;
String user_name;
String first_name;
String last_name;
UserGroup group;
}

class UserGroup {
int group_id;
String group_name;
int auth_level;
}

Ας δούμε τώρα τις τροποποιήσεις που πρέπει κανείς να κάνει στις παραπάνω κλάσεις για να γίνουν εγγράψιμες/αναγνώσιμες σε μια σχεσιακή βάση:

class User extends Component {
@PrimaryKey int user_id;
@Entry(unique=true) String user_name;
@Entry String first_name;
@Entry String last_name;
@ForeignKey UserGroup group;
}

class UserGroup extends Component{
@PrimaryKey int group_id;
@Entry String group_name;
@Entry int auth_level;
}

Ένα παράδειγμα χρήσης του DeciBell για εγγραφή ενός UserGroup και User στη βάση είναι το ακόλουθο:

UserGroup ug = new UserGroup(); ug.group_id = 12; ug.group_name = "admin"; ug.auth_level = 10; User user = new User(); user.user_id = 6; user.user_name = "thunder"; user.first_name = "John"; user.last_name = "Smith"; user.group = ug; // Initialize DeciBell: DeciBell db = new DeciBell(); db.setDbName("database1"); db.start(); // Register the above in the database: ug.register(db);user.register(db);

 

Έτσι απλά υλοποιείται μια εγγραφή στη βάση! Με αντίστοιχα απλό τρόπο υλοποιείται η ανάγνωση, η διαγραφή καθώς και η ανανέωση!