隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          Hibernate入門

          創建Hibernate配置文件

          hibernate.cfg.xml



          <hibernate-configuration>


          <session-factory>


          <property name="dialect">



          org.hibernate.dialect.Oracle9Dialect


          </property>


          <property
          name="
          connection.url">


          jdbc:oracle:thin:@127.0.0.1:1521:ORCL


          </property>


          <property
          name="
          connection.username">jbit</property>


          <property
          name="
          connection.password">bdqn</property>


          <property
          name="
          connection.driver_class">


          oracle.jdbc.driver.OracleDriver


          </property>


          <property
          name="show_sql">true</property>



          <!--省略其他配置-->



          <!--
          注意配置文件名必須包含其相對于classpath
          的全路徑-->


          <mapping
          resource="
          cn/jbit/houserent/entity/User.hbm.xml"
          />


          </session-factory>


          </hibernate-configuration>



          配置User類的映射文件


          <hibernate-mapping>


          <class
          name="cn.jbit.houserent.bean.User"
          table="
          users">



          <
          id
          name="id"
          type="
          java.lang.Integer">



          <
          column
          name="id"
          />



          <
          generator
          class="sequence"
          >



          <
          param
          name="sequence">SEQ_ID</param>



          </
          generator>



          </
          id>



          <
          property
          name="name"
          type="java.lang.String">



          <
          column
          name="name"
          length="50"
          not-null="true"
          />



          </
          property>



          <
          property
          name="password"
          type="java.lang.String">



          <
          column
          name="password"
          length="50"
          not-null="true"
          />



          </
          property>



          <!--
          省略其他配置-->


          </class>


          </hibernate-mapping>



          使用Hibernate操作數據庫需要七個步驟

          hibernate-mapping>

          1.讀取并解析配置文件

          Configuration conf = new Configuration().configure();

          2.讀取并解析映射信息,創建SessionFactory

          SessionFactory sf = conf.buildSessionFactory();

          3.打開Session

          Session session = sf.openSession();
          //sf.getCurrentSession();

          4.開始一個事務(增刪改操作必須,查詢操作可選)

          Transaction tx = session.beginTransaction();

          5.數據庫操作

          session.save(user); //或其他操作

          6.提交事務(回滾事務)

          tx.commit(); (tx.rollback();)

          7.關閉session

          如果Hibernate配置文件中,current_session_context_class參數設置為thread并采用SessionFactory的getCurrentSession()方法獲得Session實例則不需要此步

          session.close();


          代碼:

          Configuration
          conf
          = null;

          SessionFactory
          sessionFactory
          =
          null;

          Session
          session
          =
          null;

          Transaction
          tx
          =
          null;


          try {


          conf = new
          Configuration().configure();


          sessionFactory
          =
          conf.buildSessionFactory();


          session = sessionFactory.openSession();


          tx
          =
          session.beginTransaction();


          session.save(user);


          tx.commit();


          }
          catch (
          HibernateException
          e)
          {


          tx.rollback();


          e.printStackTrace();


          } finally{


          session.close();


          sessionFactory.close();


          }




          使用Hibernate實現對數據庫的查詢操作:

          Object
          get(Class class,Serializable id)

          Object
          load(Class theClass,Serializable id)

          兩種方法都可以加載數據,但有一定區別

          session.load(User.class,1002);

          或者:

          session.get(User.class,1002);


          當使用Session的get方法時,如果加載的數據不存在,get方法會返回一個null對象


          使用load方法時,如果加載的數據不存在,系統就會拋出異常


          get方法即時加載


          load方法支持lazy延遲加載




          Hibernate中實體對象的三種狀態:


          瞬時狀態(Transient)

          剛用new語句創建,還沒有被持久化,且不處于Session的緩存中

          持久狀態(Persistent)

          已經被持久化,且加入到Session的緩存中

          游離狀態(Detached)

          已經被持久化,但不再處于Session的緩存中



          總結:


          Hibernate是一個基于JDBC的持久化解決方案,是一個優秀的"對象一關系映射"框架


          使用Hibernate前要做好以下三個準備。


          1.添加需要的jar包


          2.配置Hibernate配置文件


          3.創建實體類和映射文件


          使用Hibernate完成持久化操作需要以下七個步驟


          1.讀取并解析配置文件


          2.讀取并解析映射文件,創建SessionFactory


          3.打開Session


          4.開啟事務(查詢操作不需要)


          5.執行持久化方法


          6.提交事務


          7.關閉Session


          使用提取重復代碼到基類的技巧可以簡化“七個步驟”


          Hibernate中將所操作的實體對象的狀態分為三種,分別為Transient(瞬時狀態)
          Persistent(持久狀態) 以及Detached(游離狀態)




          注意:


          openSession用一次


          用getSession獲得session省資源



          加載Hibernate的jar包:


          需要f:\hibernate-distribution-3.3.2.GA\Hibernate3.jar和f:\hibernate-distribution-3.3.2.GA\lib\required目錄下的所有jar包


          還需加載JDBC驅動包



          事務寫在業務層,若寫在DAO層,無論執行何種操作都只是操作的一個對象,不存在事務的價值


          session管理50000個操作,若超出范圍則會異常,使用假提交,把壓力扔給數據庫


          getSession.flush(); //Hibernate批量處理


          getSession.clear();

          posted on 2012-04-22 15:48 hantai 閱讀(121) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 珲春市| 库尔勒市| 巨鹿县| 霞浦县| 乐清市| 榕江县| 军事| 佛教| 垣曲县| 罗山县| 东方市| 凭祥市| 南江县| 普宁市| 崇仁县| 本溪市| 吉木萨尔县| 招远市| 峨眉山市| 元江| 云林县| 石阡县| 漯河市| 洮南市| 铜梁县| 蓬莱市| 佛坪县| 额济纳旗| 安西县| 大丰市| 盐边县| 东丽区| 云浮市| 高雄市| 喀喇沁旗| 苏州市| 潍坊市| 华安县| 诏安县| 临沭县| 隆昌县|