一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Hibernate對數據庫刪除、查找、更新操作實例代碼

Hibernate對數據庫刪除、查找、更新操作實例代碼

2020-09-23 13:31永遠的晴天 JAVA教程

本篇文章主要介紹了Hibernate對數據庫刪除、查找、更新操作實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本節繼續hibernate對數據庫的其他操作,刪除、查詢、修改。

Hibernate對數據刪除操作

刪除User表中個一條數據,是需要更具User表的主鍵id值來刪除的。首先根據id值向數據庫中查詢出來對應的對象。可以采用兩種方式一是session的get方法,一個是session的load方法。

Session的Get方法:調用這個方法會返回一個Object對象。然后我們對其強制轉換。Useruser = (User)session.get(User.class,” 402881e5441c035e01441c0360510003”); 當我們傳遞id值在數據中查找沒有相應的結果時,get方法會返回一個null值。

區別:get方法加載的時候會立刻發出sql語句去查詢,而load方法在執行的時候沒有立刻的發出sql去查詢,生成一個代理User,沒有生成真正的User。當我們真正的去用這個user的時候才會加載真正的User。Load()支持延遲加載,而Get()不支持延遲加載。Get加載的對象不存在時返回的是null對象,而Load()加載對象不存在時會拋出ObjectNotFoundException異常。

Session的Load方法:同樣是調用這個方法返回一個Object對象,再進行強制轉換。

然后我們通過get或load加載上來對應user表id的對象,再調用session的delete方法刪除該對象同時刪除表中的一條記錄,代碼如下所示。

第一種刪除方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
publicvoid testDel1()
     {
       Sessionsession =null;
       
       try
       {
        session= HibernateUtils.getSession();
        //開啟事務.
        session.beginTransaction();
        //采用load查詢不存在的數據,hibernate會拋出object not found exception
        Useruser = (User)session.load(User.class,"402881e5441c035e01441c0360510003");
        
        //刪除表中的記錄.
        //刪除,建議用此種方式刪除,先加載再刪除.
        session.delete(user);
        
        //提交事務.把內存的改變提交到數據庫上.
        session.getTransaction().commit();
        
       }catch(Exception e){
        e.printStackTrace();
        session.getTransaction().rollback();
       }finally{
        HibernateUtils.closeSession(session);
       }
       
     }

第二種刪除方式,手動構造detached對象再刪除。代碼如下所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//測試方法以test開頭.測試del方法.返回存在的加載的.
     publicvoid testDel2()
     {
       Sessionsession =null;
       
       try
       {
        session= HibernateUtils.getSession();
        //開啟事務.
        session.beginTransaction();
        
        //手動構造的Detached對象.
        Useruser =new User();
        user.setId("402881e4441b3d1c01441b3f5dfe0001");
        session.delete(user);
        
        
        //提交事務.把內存的改變提交到數據庫上.
        session.getTransaction().commit();
        
       }catch(Exception e){
        e.printStackTrace();
        session.getTransaction().rollback();
       }finally{
        HibernateUtils.closeSession(session);
       }
       
     }

Hibernate對數據查詢操作

一般查詢,代碼如下所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//查詢方法.
 publicvoid testQuery1()
 {
   Sessionsession =null;
   try
   {
    session= HibernateUtils.getSession();
    
    session.beginTransaction();
    //參數是一個字符串,是HQL的查詢語句.注意此時的的UserU為大寫,為對象的,而不是表的.
    Queryquery = session.createQuery("from User");
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

分頁查詢,代碼如下所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//分頁查詢,從什么地方查,查幾個;
 publicvoid testQuery2()
 {
   Sessionsession =null;
   try
   {
    session=HibernateUtils.getSession();
    
    session.beginTransaction();
    //參數是一個字符串,是HQL的查詢語句.注意此時的的UserU為大寫,為對象的,而不是表的.
    Queryquery = session.createQuery("from User");
    //從第一個開始查起.可以設置從第幾個查起.
    query.setFirstResult(0);
    //最大條數為兩個
    query.setMaxResults(2);
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

Hibernate對數據更新操作

手動構造detached對象,調用session的update()方法,代碼如下所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//測試方法以test開頭.測試update方法.返回存在的加載的.
publicvoid testUpdate1()
{
  Sessionsession =null;
  
  try
  {
   session= HibernateUtils.getSession();
   //開啟事務.
   session.beginTransaction();
   //采用load查詢不存在的數據,hibernate會拋出object not found exception
   
   //手動構造的Detached對象.
   Useruser =newUser();
   user.setId("402881e5441bfb0601441bfb075b0002");
   user.setName("周六");
   
   session.update(user);
   
   
   //提交事務.把內存的改變提交到數據庫上.
   session.getTransaction().commit();
   
  }catch(Exception e){
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally{
   HibernateUtils.closeSession(session);
  }
  
}

加載對象,調用session的update()方法,讓對象處于持久化狀態的時候進行更新操作,代碼如下所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//測試方法以test開頭.測試update方法.返回存在的加載的.
     publicvoid testUpdate2()
     {
       Sessionsession =null;
       
       try
       {
        session= HibernateUtils.getSession();
        //開啟事務.
        session.beginTransaction();
        //采用load查詢不存在的數據,hibernate會拋出object not found exception
        
        //先把要更新的查出來.
        //建議采用此種方式,先加載再更新的方式.
        Useruser = (User)session.load(User.class,"402881e5441bfb0601441bfb075b0002");
        //查出來的話就直接放入了.處于持久化狀態.
        user.setName("周日");
        
        //顯示的調用,因為為持久化狀態也可以不顯示調用.
        session.update(user);
        
        
        //提交事務.把內存的改變提交到數據庫上.
        session.getTransaction().commit();
        
       }catch(Exceptione){
        e.printStackTrace();
        session.getTransaction().rollback();
       }finally{
        HibernateUtils.closeSession(session);
       }
       
     }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/lovesummerforever/article/details/19190435

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产实拍会所女技师在线 | 嫩草影院久久99 | 男男浴室吸乳play | 亚洲男人天堂2023 | 精品国内自产拍在线视频 | 亚欧视频在线观看 | 非洲黑人xxxxxbbbbb | 999久久免费高清热精品 | 激情视频图片小说qvdo | 亚洲精品久久中文字幕 | 无遮挡免费h肉动漫在线观看 | 国产成人理在线观看视频 | china中国小帅gayxnxx | 青青草国产精品久久碰 | www一区| 乖女的嫩奶水h文孕妇 | 门房秦大爷在线阅读 | 亚州性夜夜射在线观看 | 韩国久播影院理论片不卡影院 | 狐媚小说 | 国产精品视频在线观看 | 农村美女沟厕嘘嘘被偷看 | 黑人干我 | 被黑人同学彻底征服全文小说阅读 | 日韩欧美中文在线 | 毛片影院 | 齐天大性之七仙女欲春迅雷链接 | caoporm国产精品视频免费 | 久久电影院久久国产 | 色老板最新网站视频地址 | 范冰冰好紧好滑好湿 | 无码爽死成人777在线观看网站 | 精品视频一区在线观看 | 视频免费视频观看网站 | 国产欧美日韩在线播放 | 精品国语对白精品自拍视 | 91外围 | caonila国产在线观看 | 媳妇和公公小说 | 久久国产乱子伦精品免费不卡 | 免费91麻豆精品国产自产在线观看 |