بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
إليكم الإصدار 1.0 من حزمة ObjectDatabase
هذه الحزمة سوف تقدم لك خدمة تسهيل التعامل مع قواعد البيانات بصورة كائنات متعلقة ببعضها.
هذه الحزمة ليست موجهة للمستخدم العادي وإنما موجهة للمطور الذي يريد أن يبني تطبيقا لأحد عملاءه.
سأقوم بشرح طريقة الاستخدام للمطور المبتدئ العادي (الذي يريد استخدام الحزمة مباشرة) وأقوم في تعقيب لاحق ذكر توجيهات للمطور المتقدم في هندسة الأشياء أو OOP!
هذه الحزمة تقدم للمطور وسيلة إلى قولبة قاعدة البيانات في نظام شيئي التوجه. سيكون لديك قاعدة بيانات على شكل SQLDataSource، وسيكون لديك RecordHome والتي تمثل جدولا في قاعدة بياناتك، وسيكون لديك Record والتي تمثل صفا أو Row من البيانات داخل إحدى جداولك.
ملاحظة: كي تستفيد من قوة هذه الحزمة، ينصح باستخدام قواعد بيانات MySQL أو قواعد بيانات أقوى. تستطيع أن تستخدم Access لكن عليك أن تقوم بخطوات زيادة على ما سأقدم.
------
افرض أن لديك قاعدة بيانات بنك معين تحمل الجداول Customer و Account وغيرها.
هذه قاعدة البيانات banksystem
هذا جدول Customer:
وهذا جدول Account:
لاحظ أن الحقل customer_id هو مفتاح أجنبي موصول إلى id في Customer.
بعد أن تصمم جدولين كهذين الجدولين وتعين المفاتيح الأساسية والثانوية أو الأجنبية Primary, Foreign Keys، نستخدم حزمتنا مباشرة لقراءة الجداول مع علاقاتها مباشرة:
public static void test()throws Exception{
Class.forName("com.mysql.jdbc.Driver");//مناسب Jdbc تحميل
ConnectionPool pool=new ConnectionPool("jdbc:mysql://localhost/banksystem","root", "admin",10);//تكوين اتصال مع قاعدة البيانات، وتوفير مسبح للاتصالات يحوي 10 اتصالات جاهزة.
TablesDataSource source=new SQLDataSource(pool);//يقرأ قاعدة البيانات مع كل تفاصيلها مثل جداولها والمفاتيح الأساسية والثانوية أو الأجنبية
RecordHome home=source.lookup("account");//نستدعي جدول الحسابات
Record r=home.load(2);//أحضر الحساب ذو الرقم التسلسلي 2
System.out.println ("Balance: "+r.getEntry("balance"));//اطبع الميزانية للحساب
Record r2=(Record)r.getRecord("customer_id");//أحضر بيانات العميل صاخب هذا الحساب
System.out.println ("Name of Customer: "+r2.getEntry("name"));//اطبع اسم العميل
//مثال آخر
RecordHome customers=source.lookup("customer");//أحضر جدول العملاء
Record c=customers.load(1);// أحضر العميل صاحب الرقم 1
c.setEntry("username", "ObjectDatabase User Name ");//غير قيمة اسم الدخول إلى التالي
customers.update(c);//ثبت التغيير في الجدول
pool.close();//أغلق الاتصال
}الشفرة السابقة تقرأ من جدول وتنتقل إلى بيانات من جدول آخر بكل سهولة. لاحظ أننا انتقلنا من account إلى customer لوجود Foriegn key في الجدول account.
انظر إلى شرح الفئات:
شرح الحزمة ObjectDatabase بالكامل
كما ترى، عندك أوامر SQL جاهزة في داخل كل من الأوامر load و update و find و save والتي تعكس الأوامر المعروفة Insert و select وغيرها. لكنك في النهاية تخلصت من SQL العادية وانتقلت إلى برمجية شيئية التوجه.
فأنت سيكون عندك Record تمثل صفا في الجدول customer وعندها تستطيع أن تعرف كل الحسابات التي عند customer باستعمال الأوامر find مثلا. لاحظ أن النتيجة ستكون List<Record> rs يعني تحكم مباشر في النتائج!
كي تستخدم الحزمة حمل المكتبة من صفحتي:
الإصدارات الجديدة سوف تكون في هذه الصفحة.
في التعقيبات المقبلة سأتناول جوانب أخرى تبين قوة وفائدة هذه الحزمة.
حاليا: تستطيع تجربتها مع أي قاعدة بيانات صنعتها قديما بـ MySQL. وأخبرني بالنتائج.
في المرفق قاعدة بيانات MySQL تمثل banksystem بسيط. تستطيع تجربة هذه القاعدة أو أي قاعدة بيانات عندك مع هذه الحزمة: