مقدمه ای بر هایبرنیت ، هایبرنیت ورژن 3.0 آخرین ورژن متن باز تکنولوژی پایدار در قلب EJB 3.0 می باشد که از آدرس www.Hibernate.com در دسترس برای دانلود می باشد. هسته هایبرنیت شامل 68549 خط کد جاوا به همراه 27948 خط کد واحدهای تست آن می باشد که تحت LGPL به صورت آزاد می باشد و توسعه آن بیش از یک سال طول کشیده شده است. هایبرنیت کلاس های جاوا را به جداول پایگاه داده نگاشت می کند.
همچنین امکانات بازیابی اطلاعات و ایجاد پرس و جو برروی آن ها را فراهم می کند و به طور موثری زمان توسعه نرم افزار را کاهش می دهد. هایبرنیت بهترین راه حل برای برنامه های مرکز داده ای که فقط از روال های ذخیره شده برای پیاده سازی منطق تجاری نرم افزار استفاده می کنند نیست.هایبرنیت بیشتر برای کاربردهایی که دامنه آن ها در مد شی گرایی می باشد و برای پیاده سازی منطق تجاری در لایه میانی که بر پایه جاوا می باشد مفید است.هایبرنیت به برنامه اجازه می دهد که بین هر پایگاه داده ای سوئیچ کند.هایبرنیت می تواند در برنامه های Swing جاوا و همچنین برنامه های مبتنی بر Servlet و یا در برنامه های J2EE به کار گرفته شود.
در این بخش به شرح معماری هایبرنیت خواهیم پرداخت.
شکل 1 تصویری از یک نمای سطح بالا از معماری هایبرنیت
شکل بالا نشان می دهد که هایبرنیت از پایگاه داده و داده های پیکربندی برای محیا کردن سرویس پایدار (و اشیاء پایدار) در برنامه استفاده می کند. استفاده از هایبرنیت نیاز به ایجاد کلاس های جاوا دارد که نمایان گر جدول در پایگاه داده می باشند و سپس نگاشت متغییر نمونه در کلاس با ستون ها در پایگاه داده . سپس هایبرنیت می تواند برای انجام عملیات انتخاب ، بروزرسانی ، درج و حذف رکوردهای جدول در پایگاه داده استفاده شود. هایبرنیت به صورت خود کار پرس و جوهایی برای انجام این کارها ایجاد می کند.
تا هنگامی که نگاشت رابطه ای اشیاء اهمیت دارد هایبرنیت یک ابزار بسیار خوب می باشد اما در مورد مدیریت اتصال و مدیریت تراکنش ، هایبرنیت فاقد کارایی و توانایی می باشد. بنابراین معمولا هایبرنیت با مدیریت اتصال و مدیریت تراکنش دیگری استفاده می شود. برای مثال آپاچی DBCP برای ذخیره سازی یا انبارسازی اتصال ها با هایبرنیت استفاده می شود. هایبرنیت قابلیت انعطاف پذیری فراوانی را ایجاد می کند. هنگامی که ما فقط از قابلیت نگاشت اشیاء رابطه ای در هایبرنیت استفاده می کنیم این نوع معماری هایبرنیت معماری Lite نامیده می شود. درصورتی که در معماری Full Cream هر سه جزء معماری هایبرنیت (مدیریت اتصال ، مدیریت تراکنش ، نگاشت رابطه ای اشیاء) استفاده می شوند.
در این بخش خواهیم دید که چگونه می توان یک برنامه ساده برای درج یک رکورد در پایگاه داده MySQL ایجاد کرد. شما می توانید این برنامه را از اکلیپس و یا از خط فرمان اجرا کنید. من فرض می کنم که شما با MySQL و اکلیپس آشنایی دارید.
برای ساده سازی در این برنامه هایبرنیت از انبار سازی اتصال ها و مدیریت تراکنش استفاده کرده است. هایبرنیت از فایل hibernate.cfg.xml برای ایجاد انبار اتصال ها و برای برپا کردن محیط لازم استفاده می کند.
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url"> jdbc:mysql://localhost/hibernatetutorial </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.connection.pool_size">10</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">update</property> <!-- Mapping files --> <mapping resource="contact.hbm.xml"/> </session-factory> </hibernate-configuration>
در فایل پیکربندی بالا تعیین کردیم که از پایگاه داده hibernatetutorial استفاده کنیم که برروی کامپیوتر localhost در حال اجرا می باشد و کاربر پایگاه داده root و بدون پسورد می باشد. خصوصیت dialect برابر org.hibernate.dialect.MySQLDialect می باشد که به هایبرنیت می گوید که درحال حاضر از پایگاه داده MySQL استفاده می کنیم. هایبرنیت پایگاه داده های زیادی را پشتیبانی می کند. با استفاده از هایبرنیت می توان از خصوصیات dialect زیر استفاده کرد.
خصوصیت <mapping resource="contact.hbm.xml"/> نیز نگاشت جدول contact می باشد.
هایبرنیت از کلاس های POJO برای نگاشت جداول پایگاه داده استفاده می کند. می توان متغیرها را برای نگاشت به ستون های پایگاه داده پیکربندی کرد.در زیر کد Contact.java موجود می باشد:
package roseindia.tutorial.hibernate; /** * @author Deepak Kumar * * Java Class to map to the datbase Contact Table */ public class Contact { private String firstName; private String lastName; private String email; private long id; /** * @return Email */ public String getEmail() { return email; } /** * @return First Name */ public String getFirstName() { return firstName; } /** * @return Last name */ public String getLastName() { return lastName; } /** * @param string Sets the Email */ public void setEmail(String string) { email = string; } /** * @param string Sets the First Name */ public void setFirstName(String string) { firstName = string; } /** * @param string sets the Last Name */ public void setLastName(String string) { lastName = string; } /** * @return ID Returns ID */ public long getId() { return id; } /** * @param l Sets the ID */ public void setId(long l) { id = l; } }
در قسمت قبلی شروع کردیم به مباحث مقدماتی و معماری و ویژگی های هایبرنیت در جاوا در این قسمت به ادامه مطلب می پردازیم
فایل Contact.hbm.xml برای نگاشت شیء contact به جدول contact در پایگاه داده استفاده می شود.
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="roseindia.tutorial.hibernate.Contact" table="CONTACT"> <id name="id" type="long" column="ID" > <generator class="assigned"/> </id> <property name="firstName"> <column name="FIRSTNAME" /> </property> <property name="lastName"> <column name="LASTNAME"/> </property> <property name="email"> <column name="EMAIL"/> </property> </class> </hibernate-mapping>
در فایل پیکربندی hibernate.cfg.xml تعیین کرده ایم که از پایگاه داده hibernatetutorial که برروی کامپیوتر localhost اجرا شده است استفاده کنیم. بنابراین پایگاه داده hibernatetutorial را برروی کامپیوتر localhost ایجاد کنید.
حال آماده نوشتن یک برنامه برای درج داده در پایگاه داده هستیم. ماباید ابتدا مفهموم نشست هایبرنیت را بفهمیم. نشست هایبرنیت رابط اصلی زمان اجرا بین برنامه جاوا و هایبرنیت می باشد. ابتدا ما نیاز داریم که Session.SessionFctory هایبرنیت را دریافت کنیم که به برنامه اجازه می دهد که نشست هایبرنیت را با خواندن hibernate.cfg.xml ایجاد کند. سپس متد save در نشست برای ذخیره سازی اطلاعات contact در پایگاه داده استفاده می شود.
session.save(contact)
کد زیر مربوط به FirstExample.java می باشد.
package roseindia.tutorial.hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * @author Deepak Kumar * * http://www.roseindia.net * Hibernate example to inset data into Contact table */ public class FirstExample { public static void main(String[] args) { Session session = null; try{ // This step will read hibernate.cfg.xml and prepare hibernate for use SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); session =sessionFactory.openSession(); //Create new instance of Contact and set values in it by reading them from form object System.out.println("Inserting Record"); Contact contact = new Contact(); contact.setId(3); contact.setFirstName("Deepak"); contact.setLastName("Kumar"); contact.setEmail("deepak_38@yahoo.com"); session.save(contact); System.out.println("Done"); }catch(Exception e){ System.out.println(e.getMessage()); }finally{ // Actual contact insertion will happen at this step session.flush(); session.close(); } } }
در بخش بعدی نشان خواهم داد که چگونه می توان برنامه را اجرا کرده و آن را تست کنیم.هایبرنیت یک نرم افزار آزاد ومتن باز می باشد و می توانید آن را از سایت زیر دانلود کرده و آن را نصب کنید.
http://www.hibernate.org/30.html
اما من چیزهای زیادی را دریک فایل زیپ فراهم کرده ام. مثال ها و کتابخانه های کد را از لینک زیر دانلود کرده و آن را در پوشه مورد علاقه خود مثلا c:\hiebernateexample استخراج کنید.
http://www.roseindia.net/hibernate/hibernate.zip
برای اجرای مثال شما باید بروی کامپیوتر اکلیپس را نصب کنید. پروژه اکلیپس را شروع کرده و همان طور که در شکل زیر نشان داده شده است پروژه جاوا را انتخاب کنید.
برروی دکمه Next کلیک کرده و در صفحه بعدی مقدار پیش فرض فولدر خروجی را hibernateexample/bin رها کنید.
برروی دکمه Finish کلیک کنید.حال همان طور که در شکل زیر نشان داده شده است فایل FirstExample.java را بازکنید.
با استفاده از کاوشگر پنجره ها فایل های Contact.hbm.xml و hibernate.cfg.xml را درون پوشه bin پروژه کپی کنید.همان طور که در شکل نمایش داده شده است برای اجرای مثال منوی Run->Run As->Java Appication را انتخاب کنید.
این کار باعث اجرای مثال هایبرنیت در اکلیپس شده و خروجی زیر در کنسول اکلیپس به نمایش درخواهد آمد.
در این قسمت به شما نشان دادم که چگونه می توان مثال اول هایبرنیت را اجرا کرد.
در آخرین مثال فایل contact.hbm.xml را برای نگاشت شیء contact به جدول Contact در ایجاد کردیم.حال بیایید هر کدام از اجزای فایل نگاشت را بفهمیم.برای یادآوری محتوای فایل contact.hbm.xml در زیر وجود دارد:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="roseindia.tutorial.hibernate.Contact" table="CONTACT"> <id name="id" type="long" column="ID" > <generator class="assigned"/> </id> <property name="firstName"> <column name="FIRSTNAME" /> </property> <property name="lastName"> <column name="LASTNAME"/> </property> <property name="email"> <column name="EMAIL"/> </property> </class> </hibernate-mapping>
فایل های نگاشت هایبرنیت فایل های ساده XML می باشند. در زیر برخی از عناصر مهم فایل نگاشت وجو دارند.
<id name="id" type="long" column="ID" >
کلید اصلی به فیلد ID از جدول Contact نگاشت می شود.خصوصیات عنصر <id> عبارتند از :
4. عنصر <generator> : متد <generator> برای ایجاد کلید اصلی برای رکورد جدید استفاده می شود.در زیر برخی از تولید کننده های رایج وجود دارند :
5. عنصر <property> : عناصر <property> خصوصیات استاندارد جاوا و نگاشت آن ها به الگوی پایگاه داده را تعریف می کنند. عنصر <property> برای تعیین خصوصیات اضافی از عنصر <column-child> استفاده می کند. مانند نام شاخص در یک ستون و یا یک نوع خاص ستون.
کارشناس ارشد شبکه مایکروسافت
فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود