<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)題查看
    • --隔葉黃鶯

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲激情视频图片| 久久精品国产亚洲AV高清热 | 免费精品视频在线| 国产啪精品视频网站免费尤物 | 国产精品成人免费一区二区| 亚洲精品影院久久久久久| 青青视频免费在线| 五月婷婷亚洲综合| 二个人看的www免费视频| 在线亚洲午夜理论AV大片| a级成人毛片免费视频高清| 亚洲精品乱码久久久久久蜜桃不卡| 久久久久女教师免费一区| 亚洲中文久久精品无码| 久久国产免费一区| 亚洲综合国产精品第一页| 国内精品免费视频精选在线观看| 久久伊人久久亚洲综合| 久久福利资源网站免费看| 亚洲人成色77777| 无码人妻精品中文字幕免费| 亚洲日韩国产精品无码av| 久99久精品免费视频热77| 中文字幕亚洲精品| 妞干网免费视频在线观看| 色婷婷综合缴情综免费观看 | 亚洲成人黄色在线| 国产在线19禁免费观看国产| 韩国免费a级作爱片无码| 亚洲第一页在线视频| 日本一道本高清免费| 国产免费网站看v片在线| 亚洲人成www在线播放| 亚洲国产成人乱码精品女人久久久不卡 | 国产精品亚洲高清一区二区| 无码精品一区二区三区免费视频| 亚洲欧美日韩中文高清www777| 国产精品V亚洲精品V日韩精品 | 精品国产污污免费网站| 亚洲国产欧美日韩精品一区二区三区| 亚洲精品视频久久久|