Hibernate基礎(chǔ)

一.批量插入余黎,使用for循環(huán)可以方便的批量插入
  SessionFactory sf = new Configuration().configure().buildSessionFactory();

    Session s = sf.openSession();
    s.beginTransaction();

    for (int i = 0; i < 10; i++) {
        Product p = new Product();
        p.setName("iphone"+i);
        p.setPrice(i);
        s.save(p);         
    }

    s.getTransaction().commit();
    s.close();
    sf.close();
二.對象狀態(tài)
  瞬時:指的是沒有和hibernate發(fā)生任何關(guān)系,在數(shù)據(jù)庫中也沒有對應(yīng)的記錄懂傀,一旦JVM結(jié)束,這個對象也就消失了 
  持久: 指得是一個對象和hibernate發(fā)生聯(lián)系句旱,有對應(yīng)的session,并且在數(shù)據(jù)庫中有對應(yīng)的一條記錄
  脫管:指的是一個對象雖然在數(shù)據(jù)庫中有對應(yīng)的一條記錄抡驼,但是它所對應(yīng)的session已經(jīng)關(guān)閉了
    Product p = new Product();
    p.setName("p1");
    System.out.println("此時p是瞬時狀態(tài)");
    s.save(p);
    System.out.println("此時p是持久狀態(tài)");
    s.getTransaction().commit();
    s.close();
    System.out.println("此時p是脫管狀態(tài)");
三.通過id獲取對象
     Product p =(Product) s.get(Product.class, 6);
    //需要傳遞一個類對象鬼廓,畢竟需要知道獲取的是哪個對象
    //除了get之外還可以使用load獲取對象
     System.out.println("id=6的產(chǎn)品名稱是: "+p.getName());
四.根據(jù)id把對象刪除掉
   注意:hibernate在刪除一條數(shù)據(jù)之前,先要通過id把這條記錄取出來
     Product p =(Product) s.get(Product.class, 5);
    s.delete(p);
五.修改一個對象的屬性致盟,并更新到數(shù)據(jù)庫
Product p =(Product) s.get(Product.class, 6);//根據(jù)id獲取該對象
     
    System.out.println(p.getName());
     
    p.setName("iphone-modified");
     //修改該對象的屬性
    s.update(p);
    //通過session的update方法把變化更新到數(shù)據(jù)庫中
六.HQL(Hibernate Query Language)
hibernate專門用于查詢數(shù)據(jù)的語句
有別于SQL碎税,HQL更接近面向?qū)ο蟮乃季S方式
    String name = "iphone";
    Query q =s.createQuery("from Product p where p.name like ?");
   //注意前面沒有select *,不需要,用的是類名Product而不是表product_
   //首先根據(jù)hql創(chuàng)建一個Query對象
    q.setString(0, "%"+name+"%");
   //設(shè)置參數(shù)馏锡,這里基0,根據(jù)name進(jìn)行模糊查詢
    List<Product> ps= q.list();
  //通過Query對象的list()方法即返回查詢的結(jié)果了
    for (Product p : ps) {
        System.out.println(p.getName());
    }
七.Criteria進(jìn)行數(shù)據(jù)查詢
 完全是面向?qū)ο蟮姆绞竭M(jìn)行數(shù)據(jù)查詢
 將不再看到有sql語句的痕跡
String name = "iphone";        
    Criteria c= s.createCriteria(Product.class);
//1. 通過session的createCriteria創(chuàng)建一個Criteria 對象
    c.add(Restrictions.like("name", "%"+name+"%"));
 //2. Criteria.add 增加約束雷蹂。 在本例中增加一個對name的模糊查詢(like)
    List<Product> ps = c.list();
 //3. 調(diào)用list()方法返回查詢結(jié)果的集合
    for (Product p : ps) {
        System.out.println(p.getName());
    }
 除此之外,Criteria還可以很方便的進(jìn)行分頁查詢和獲取總數(shù)
八.標(biāo)準(zhǔn)SQL查詢
多表聯(lián)合查詢并且有分組統(tǒng)計函數(shù)的情況下效率較高
 String name = "iphone";
     
    String sql = "select * from product_ p where p.name like '%"+name+"%'";
     
    Query q= s.createSQLQuery(sql);
   //使用Session的createSQLQuery方法執(zhí)行標(biāo)準(zhǔn)SQL語句
    List<Object[]> list= q.list();
   //因為標(biāo)準(zhǔn)SQL語句有可能返回各種各樣的結(jié)果
   //比如多表查詢杯道,分組統(tǒng)計結(jié)果等等匪煌。 
   //不能保證其查詢結(jié)果能夠裝進(jìn)一個Product對象中
   //所以返回的集合里的每一個元素是一個對象數(shù)組
  //然后再通過下標(biāo)把這個對象數(shù)組中的數(shù)據(jù)取出來。
    for (Object[] os : list) {
        for (Object filed: os) {
            System.out.print(filed+"\t");
        }
        System.out.println();
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市萎庭,隨后出現(xiàn)的幾起案子霜医,更是在濱河造成了極大的恐慌,老刑警劉巖驳规,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肴敛,死亡現(xiàn)場離奇詭異,居然都是意外死亡吗购,警方通過查閱死者的電腦和手機医男,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捻勉,“玉大人昨登,你說我怎么就攤上這事」岬祝” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵撒强,是天一觀的道長禽捆。 經(jīng)常有香客問我,道長飘哨,這世上最難降的妖魔是什么胚想? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮芽隆,結(jié)果婚禮上浊服,老公的妹妹穿的比我還像新娘。我一直安慰自己胚吁,他們只是感情好牙躺,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腕扶,像睡著了一般孽拷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上半抱,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音窿侈,去河邊找鬼炼幔。 笑死,一個胖子當(dāng)著我的面吹牛史简,可吹牛的內(nèi)容都是我干的乃秀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼环形!你這毒婦竟也來了策泣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤抬吟,失蹤者是張志新(化名)和其女友劉穎萨咕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火本,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡危队,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钙畔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茫陆。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖擎析,靈堂內(nèi)的尸體忽然破棺而出簿盅,到底是詐尸還是另有隱情,我是刑警寧澤揍魂,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布桨醋,位于F島的核電站,受9級特大地震影響现斋,放射性物質(zhì)發(fā)生泄漏喜最。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一庄蹋、第九天 我趴在偏房一處隱蔽的房頂上張望瞬内。 院中可真熱鬧,春花似錦限书、人聲如沸虫蝶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秉扑。三九已至,卻和暖如春调限,著一層夾襖步出監(jiān)牢的瞬間舟陆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工耻矮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秦躯,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓裆装,卻偏偏與公主長得像踱承,于是被迫代替她去往敵國和親倡缠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,967評論 0 27
  • 本文包括:1茎活、Hibernate 的查詢方式2昙沦、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,656評論 0 15
  • Hibernate_緩存&事務(wù)&批量查詢概述 一盾饮、 Hibernate的持久化類 持久化類是指一個Java類和數(shù)據(jù)...
    明天你好向前奔跑閱讀 508評論 0 10
  • 狀態(tài):修改,修改更新中 目錄: 一懒熙,邏輯的基本認(rèn)識與學(xué)習(xí)方法 1.1 邏輯的概念:思維的規(guī)律 1.2 邏輯學(xué)重要性...
    lemonTreeTop閱讀 5,718評論 1 58
  • 1.你覺得讀書的意義是什么丘损? 讀書讓我了解更多的人、情工扎、物徘钥、事,保持積極的心態(tài)肢娘,能讓我感覺到自己是“新鮮”的呈础。 2...
    a41183c0fde2閱讀 147評論 0 0