<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 66,  comments - 11,  trackbacks - 0
      在Hibernate中,session負責(zé)完成對象的持久化操作,而Hibernate Session與之Hibernate,相當(dāng)于JDBCConnection與之JDBC
    1、初始化Hibernate配置管理類Configuration
    Configuration config = new Configuration().configure();
    利用CLASSPATH中的默認配置文件hibernate.cfg.xml構(gòu)建Configuration實例。
    2、通過Configuration類實例創(chuàng)建Session的工廠類SessionFactory
    SessionFactory sessionFactory = config.buildSessionFactory();
    3、通過SessionFactory得到Session實例
    session = sessionFactory.openSession();
    通過這個Session實例,就可以對對象進行持久化操作

      Configuration類負責(zé)管理Hibernate的配置信息,Hibernate運行時需要獲取一些底層實現(xiàn)的基本信息,包括:
    數(shù)據(jù)庫URL
    數(shù)據(jù)庫用戶名
    數(shù)據(jù)庫用戶密碼
    數(shù)據(jù)庫JDBC驅(qū)動類
    數(shù)據(jù)庫適配器,用于對特定數(shù)據(jù)庫提供支持。

      Configuration類一般只有在獲取SessionFactory時需要涉及,當(dāng)SessionFactory實例創(chuàng)建之后,由于配置信息已經(jīng)由hibernate綁定在返回的SessionFactory之中,因此一般情況下無需在對其操作。
    如果不希望使用默認的hibernate.cfg.xml文件作為配置文件,還有如下方法:
    File file = new File("c:\\sample\\myhiernate.xml");
    Configuration config = new Configuration().configure(file);

      SessionFactory負責(zé)創(chuàng)建Session實例:
    Configuration config = new Configuration().configure();
    SessionFactory sessionFactory = config.buildSessionFactory();
    SessionFactory一旦構(gòu)造完成,即被賦予特定的配置信息。如果需要使用基于改動后的config實例的SessionFactory,需要從config重新構(gòu)建一個SessionFactory實例。
    SessionFactory中保存了對應(yīng)當(dāng)前數(shù)據(jù)庫配置的所有映射關(guān)系,同時也負責(zé)維護當(dāng)前的二級緩存和Statement Pool.由此可見,SessionFactory的創(chuàng)建過程必然非常復(fù)雜,代價高昂,而這也就意味著,我們應(yīng)該在系統(tǒng)設(shè)計中充分考慮到SessionFactory的重用策略。由于SessionFactory是線程安全的,可以多個線程并發(fā)調(diào)用,大多數(shù)情況下,一個應(yīng)用中針對一個數(shù)據(jù)庫共享一個SessionFactory實例即可。

      Session作為貫穿Hibernate的持久化管理器核心,提供了眾多持久化方法,如save、update、delete,find等。通過這些方法,可透明的完成對象的增刪改查。同事,Hibernate Session的設(shè)計是非線程安全的,也就是說,一個Session實例同時只可一個線程使用,同一個Session實例的多線程并發(fā)調(diào)用將導(dǎo)致難以預(yù)知的錯誤
    Configuration config = new Configuration().configure();
    SessionFactory sessionFactory = config.buildSessionFactory();
    Session session = sessionFactory.openSession();

    Save操作:
    //新增名為"Emma"的用戶記錄
    TUser user = new TUser();
    user.setName(
    "Emma");
    session.save(user);

    Get操作:
    //假設(shè)T_User表中存在id=1的記錄
    TUser user = (TUser)session.get(TUser.class,new Integer(1));

    delete操作:
    //假設(shè)T_User表中存在id=1的記錄
    TUser user = (TUser)session.get(TUser.class,new Integer(1));
    session.delete(user);


    //也可以通過HQL指定刪除條件(Hibernate2)
    session.delete("from TUser where id=1");


    //通過Query接口進行基于HQL的刪除操作(Hibernate3)
    String hql = "delete TUser where id=1";
    Query query 
    = session.createQuery(hql);
    query.executeUpdate();
    Find(Hibernate2)操作
    String hql 
    = "form TUser where name='Erica'";
    List userList 
    = session.find(hql);


    Hibernate3中的Session接口取消了find方法,我們必須通過Query或Criteria接口進行數(shù)據(jù)查詢
    通過Query接口進行數(shù)據(jù)查詢:
    String hql = "from TUser user where user.name like ?";
    Query query 
    = session.createQuery(hql);
    query.setParameter(
    0,"Cartier");

    List list 
    = query.list();

    Iterator it 
    = list.iterator();
    while(it.hasNext()){
        TUser user 
    = (TUser)it.next();
        System.out.println(user.getName);
    }

    通過Criteria接口進行數(shù)據(jù)查詢:
    Criteria criteria = session.createCriteria(TUser.class);
    criteria.add(Expression.eq(
    "name","Cartier"));

    List list 
    = criteria.list();
    Iterator it 
    = list.iterator();
    while(it.hasNext()){
        TUser user 
    = (TUser)it.next();
        System.out.println(user.getName());
    }

    Query面向HQL和Native SQL,而Criteria則提供了面向?qū)ο蟮牟樵兡J健?br />


    posted on 2009-10-11 10:33 王永慶 閱讀(203) 評論(0)  編輯  收藏 所屬分類: HIBERNATE
    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關(guān)注blogs

    搜索

    •  

    最新評論

    • 1.?re: 心中的那個她[未登錄]
    • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
    • --王永慶
    • 2.?re: 心中的那個她[未登錄]
    • 兄弟,喜歡就大膽去追好了,就是因為喜歡才會有不愉快,如果想一輩子沒有這些煩惱,找一個可有可無的人就好了。這種事講的是緣分吧。別人對你好不好其實不太重要。放開心情就好了。
    • --萍水相逢
    • 3.?re: 心中的那個她
    • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
    • --咖啡妝
    • 4.?re: 難以割舍的那份情感
    • 評論內(nèi)容較長,點擊標(biāo)題查看
    • --王永慶
    • 5.?re: 難以割舍的那份情感
    • 評論內(nèi)容較長,點擊標(biāo)題查看
    • --隔葉黃鶯

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99999久久久久久亚洲| 亚洲在成人网在线看| 亚洲综合色婷婷七月丁香| 亚洲精品成人无限看| 老司机亚洲精品影院| 亚洲成a∧人片在线观看无码| 亚洲国产精品人人做人人爱| 亚洲va久久久噜噜噜久久男同| 亚洲AV无码成人精品区在线观看 | 丁香婷婷亚洲六月综合色| 桃子视频在线观看高清免费视频| 91精品视频在线免费观看| 国产自产拍精品视频免费看| 亚洲AV无码成人精品区在线观看| a毛片免费观看完整| 全黄a免费一级毛片人人爱| 亚洲精品国产第1页| 91在线视频免费观看| 亚洲中文字幕无码一久久区| 两个人看的www免费视频中文| 亚洲AV无码专区亚洲AV伊甸园| 日韩免费人妻AV无码专区蜜桃 | 亚洲美女中文字幕| 国产成人无码免费网站| 午夜私人影院免费体验区| 亚洲五月六月丁香激情| 一个人看的在线免费视频| 日本特黄a级高清免费大片| 亚洲a级成人片在线观看| 久久国产精品免费看| 亚洲色精品aⅴ一区区三区| 美女免费视频一区二区三区| 成人免费淫片在线费观看| 亚洲国产成人手机在线电影bd| 日韩免费视频一区二区| 亚洲va在线va天堂成人| 一本色道久久88综合亚洲精品高清| 亚洲av无码成人精品国产| 在线看片人成视频免费无遮挡| 四虎一区二区成人免费影院网址| 又粗又硬又大又爽免费视频播放|