در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

هایبرنیت (جـــاوا) قسمت اول

مقدمه ای بر هایبرنیت

هایبرنیت ورژن 3.0 آخرین ورژن متن باز تکنولوژی پایدار در قلب EJB 3.0 می باشد که از آدرس www.Hibernate.com در دسترس برای دانلود می باشد. هسته هایبرنیت شامل 68549 خط کد جاوا به همراه 27948 خط کد واحدهای تست آن می باشد که تحت LGPL به صورت آزاد می باشد و توسعه آن بیش از یک سال طول کشیده شده است. هایبرنیت کلاس های جاوا را به جداول پایگاه داده نگاشت می کند. همچنین امکانات بازیابی اطلاعات و ایجاد پرس و جو برروی آن ها را فراهم می کند و به طور موثری زمان توسعه نرم افزار را کاهش می دهد. هایبرنیت بهترین راه حل برای برنامه های مرکز داده ای که فقط از روال های ذخیره شده برای پیاده سازی منطق تجاری نرم افزار استفاده می کنند نیست.

هایبرنیت بیشتر برای کاربردهایی که دامنه آن ها در مد شی گرایی می باشد و برای پیاده سازی منطق تجاری در لایه میانی که بر پایه جاوا می باشد مفید است.هایبرنیت به برنامه اجازه می دهد که بین هر پایگاه داده ای سوئیچ کند.

هایبرنیت می تواند در برنامه های Swing جاوا و همچنین برنامه های مبتنی بر Servlet و یا در برنامه های J2EE به کار گرفته شود.

ویژگی های هایبرنیت

• هایبرنیت 3.0 امکانات پرس وجو با خصوصیات کاملی را فراهم می کند. HQL نمونه جدید پیشرفته Hibernate Criteria Query API می باشد و برای پشتیبانی از زبان SQL توسعه داده شده است.

• امکان فیلترگذاری برروی داده های موقت ، ناحیه ای فراهم می کند.

• Enhanced Criteria query API برای پشتیبانی از عملگر پروژه و تجمع و Subselect ایجاد شده است.

• کنترل کارایی در زمان اجرا از طریق JMX و یا APIمحلی جاوا شامل حافظه نهان سطح دوم کاوشگر.

• پشتیبانی از اکلیپس شامل پلاگین اکلیپس برای کار با هایبرنیت شامل ویرایشگر نگاشت ، پرس و جوی نمونه ساز محاوره ای و ابزار مهندسی معکوس الگو.

• هایبرنیت به صورت آزاد تحت LGPL می باشد و می توان از آن برای توسعه ، پکیج سازی و توزیع برنامه ها به صورت آزاد استفاده می شود.

• هایبرنیت مقیاس پذیر می باشد. هایبرنیت بسیار کارا می باشد و به خاطر دولایه بودن معماری آن می تواند در محیط های خوشه بندی شده استفاده شود.

• زمان توسعه کم تر: هایبرنیت زمان توسعه نرم افزار را کاهش می دهد چون از وراثت ، چند ریختی ، ترکیب و چارچوب کلکسیون جاوا پشتیبانی می کند.

• تولید خود کار کلید اصلی : هایبرنیت کلید اصلی را به طور خود کار ایجاد می کند.

• عملیات پایدار به سبک EJB3 : EJB3 عملیات Create() و Merge() را تعریف می کند که کمی متفاوت از عملیات SaveOrUpdate() و SaveOrUpdateCopy() در هایبرنیت می باشد. هایبرنیت هر چهار عمل را به صورت متد در رابط session پشتیبانی خواهد کرد.

• پیوست XML هایبرنیت این اجازه را به داده ها می دهد که به صورت XML و POJO به صورت قابل تبادل نمایش داده شوند.

معماری هایبرنیت

در این بخش به شرح معماری هایبرنیت خواهیم پرداخت.

هایبرنیت (جـــاوا) قسمت اول

شکل 1 تصویری از یک نمای سطح بالا از معماری هایبرنیت

شکل بالا نشان می دهد که هایبرنیت از پایگاه داده و داده های پیکربندی برای محیا کردن سرویس پایدار (و اشیاء پایدار) در برنامه استفاده می کند. استفاده از هایبرنیت نیاز به ایجاد کلاس های جاوا دارد که نمایان گر جدول در پایگاه داده می باشند و سپس نگاشت متغییر نمونه در کلاس با ستون ها در پایگاه داده . سپس هایبرنیت می تواند برای انجام عملیات انتخاب ، بروزرسانی ، درج و حذف رکوردهای جدول در پایگاه داده استفاده شود. هایبرنیت به صورت خود کار پرس و جوهایی برای انجام این کارها ایجاد می کند.

معماری هایبرنیت دارای 3 جزء اصلی می باشد.

• مدیریت اتصال : سرویس مدیریت اتصال هایبرنیت مدیریت کارایی را برای اتصال های پایگاه داده فراهم می کند. اتصال پایگاه داده گران ترین بخش هنگام تعامل بایک پایگاه داده می باشد چون این اتصال منابع زیادی برای باز یا بسته بودن نیاز دارد.

• مدیریت تراکنش : سرویس مدیریت تراکنش برای کاربر این توانایی را فراهم می کند که بیش از یک دستور پایگاه داده را در یک زمان اجرا کند.

• نگاشت رابطه ای اشیاء : نگاشت رابطه ای اشیاءیک تکنیک برای نگاشت نمایش داده ازیک مدل اشیاء به مدل داده رابطه ای می باشد. این بخش از هایبرنیت برای انتخاب ، درج ، حذف و بروزرسانی رکوردها از جدول مورد نظر می باشد. هنگامی که ما یک شیء را به متد Session.save() می فرستیم، هایبرنیت وضعیت مغییرهای آن شیء را می خواند و پرس و جوی لازم را اجرا می کند.

تا هنگامی که نگاشت رابطه ای اشیاء اهمیت دارد هایبرنیت یک ابزار بسیار خوب می باشد اما در مورد مدیریت اتصال و مدیریت تراکنش ، هایبرنیت فاقد کارایی و توانایی می باشد. بنابراین معمولا هایبرنیت با مدیریت اتصال و مدیریت تراکنش دیگری استفاده می شود. برای مثال آپاچی 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 زیر استفاده کرد.

• DB2 - org.hibernate.dialect.DB2Dialect

• HypersonicSQL - org.hibernate.dialect.HSQLDialect

• Informix - org.hibernate.dialect.InformixDialect

• Ingres - org.hibernate.dialect.IngresDialect

• Interbase - org.hibernate.dialect.InterbaseDialect

• Pointbase - org.hibernate.dialect.PointbaseDialect

• PostgreSQL - org.hibernate.dialect.PostgreSQLDialect

• Mckoi SQL - org.hibernate.dialect.MckoiDialect

• Microsoft SQL Server - org.hibernate.dialect.SQLServerDialect

• MySQL - org.hibernate.dialect.MySQLDialect

• Oracle (any version) - org.hibernate.dialect.OracleDialect

• Oracle 9 - org.hibernate.dialect.Oracle9Dialect

• Progress - org.hibernate.dialect.ProgressDialect

• FrontBase - org.hibernate.dialect.FrontbaseDialect

• SAP DB - org.hibernate.dialect.SAPDBDialect

• Sybase - org.hibernate.dialect.SybaseDialect

• Sybase Anywhere - org.hibernate.dialect.SybaseAnywhereDialect

خصوصیت <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;
  }

}


نویسنده : فرهاد خانلری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#اتصال_کلاس_های_جاوا_به_جداول_پایگاه_داده #آموزش_hibernate_در_جاوا #آموزش_برنامه_نویسی_جاوا #آموزش_کار_با_هایبرنت #کار_با_دیتابیس_در_جاوا #کار_با_hibernate_در_جاوا #درج_و_حذف_در_دیتابیس_در_جاوا #کار_با_orm_در_جاوا
عنوان
1 هایبرنیت (جـــاوا) قسمت اول رایگان
2 هایبرنیت (جـــاوا) قسمت دوم رایگان
زمان و قیمت کل 0″ 0
1 نظر
mars

سلام ممنون بابت این مقاله... کاش ادامه میدادید

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....