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

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

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

    隨筆-21  評論-29  文章-0  trackbacks-0

    在Base類中加入以下代碼實現(xiàn)get方法

    package cn.itcast.hibernate;
    import java.util.Date;

    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import cn.itcast.hibernate.domain.User;
    import org.hibernate.Transaction;
    public class Base {

        
    public static void main(String[] args) {
            
            User user 
    = new User();
            user.setBirthday(
    new Date());
            user.setName(
    "name");
            addUser(user);    
            
            User u 
    = getUser(user.getId());
            System.out.println(
    "name:"+u.getName());
        }

        
         
    static User getUser(int id){
             Session s 
    = null ;
             
    try{
                 s 
    = HibernateUtil.getSession();
                 Class userClass 
    = User.class;
                 User user 
    = (User)s.get(User.class,id);
                 
    return user ;
             }
    finally {
                 
    if(s !=null)
                     s.close();
             }

         }

        
            
    static void addUser(User user){
                Session s 
    = null ;
                Transaction tx 
    = null ;
                
    try{
                    s 
    = HibernateUtil.getSession();
                    tx 
    = s.beginTransaction();
                    s.save(user);
                    tx.commit();
                }
    catch(HibernateException e){
                    
    if(tx !=null)
                        tx.rollback();
                    
    throw e ;
                }
    finally {
                    
    if(s !=null)
                        s.close();
                }

            }

            
    }

    對get方法參數(shù)User.class的理解:
    由于Session可以管理多個數(shù)據(jù)庫表所對應的多個實體對象。如果要查詢id為1的實體對象,Session.get方法需要知道去哪個數(shù)據(jù)庫表中查詢id為1的記錄,所以。除了給get方法傳遞所要查詢的實體對象的id值外,還必須給get方法傳遞實體對象的類型,get方法才能知道去哪個數(shù)據(jù)庫表中進行查詢。
    控制臺顯示結(jié)果:    name:name

    在配置文件hibernate.cfg.xml文件中加入
    <property name="show_sql">true</property> 
    可顯示所執(zhí)行的sql語句

    load方法
    懶加載 并不馬上訪問數(shù)據(jù)庫 只有第一次應用時才訪問數(shù)據(jù)庫 load方法的返回對象永遠不可能為空

    package cn.itcast.hibernate;
    import java.util.Date;

    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import cn.itcast.hibernate.domain.User;
    import org.hibernate.Transaction;
    public class Base {

        
    public static void main(String[] args) {
            
            User user 
    = new User();
            user.setBirthday(
    new Date());
            user.setName(
    "name");
            addUser(user);    
            
            User u 
    = getUser(user.getId());
            System.out.println(
    "name:"+u.getName());
        }

        
         
    static User getUser(int id){
             Session s 
    = null ;
             
    try{
                 s 
    = HibernateUtil.getSession();
                 Class userClass 
    = User.class;
                 
    //User user = (User)s.get(User.class,id);
                 User user1 = (User)s.load(User.class,id);
                 System.out.println(
    "name:"+user1.getName());
                 System.out.println(user1.getClass().getName());
                 
    return user1 ;
             }
    finally {
                 
    if(s !=null)
                     s.close();
             }

         }

        
            
    static void addUser(User user){
                Session s 
    = null ;
                Transaction tx 
    = null ;
                
    try{
                    s 
    = HibernateUtil.getSession();
                    tx 
    = s.beginTransaction();
                    s.save(user);
                    tx.commit();
                }
    catch(HibernateException e){
                    
    if(tx !=null)
                        tx.rollback();
                    
    throw e ;
                }
    finally {
                    
    if(s !=null)
                        s.close();
                }

            }

            
    }


    在這里增加的打印user1類名的代碼,看到load方法所返回User子類的名稱。

    save與persist方法的區(qū)別:在沒有開啟事務的時候
    save方法會把數(shù)據(jù)插入到數(shù)據(jù),之后又回滾,刪掉數(shù)據(jù)。而persist方法根本就不執(zhí)行插入。

    總結(jié)Session的幾個主要方法:
      1 save,persist保存數(shù)據(jù),persist在事務外不會產(chǎn)生insert語句;
      2.delete,刪除對象;
      3.update,更新對象,如果數(shù)據(jù)庫中沒有記錄,會出現(xiàn)異常;
      4.get,根據(jù)id查,會立刻訪問數(shù)據(jù)庫。
      5.load,根據(jù)id查(返回的是代理,不會立即訪問數(shù)據(jù)庫)
      6.saveOrUpdate,merge(根據(jù)id和version的值來確定是save或update),調(diào)用merge你的對象還是托管的。
      7.lock()把對象變成持久對象,但不會同步對象的狀態(tài)

    下午學習實體對象的三種狀態(tài)與saveOrUpdate方法。

    posted on 2009-05-04 11:10 特立獨行 閱讀(1006) 評論(0)  編輯  收藏 所屬分類: Hibernate框架
    主站蜘蛛池模板: 永久黄网站色视频免费直播| 亚洲Av无码国产情品久久 | 亚洲精品国产精品乱码视色| 国产真人无码作爱免费视频| 97亚洲熟妇自偷自拍另类图片| 青娱乐免费在线视频| 免费国产高清毛不卡片基地| 亚洲va久久久噜噜噜久久| 国产成人无码免费看视频软件| 日韩在线观看免费完整版视频| 亚洲三级电影网址| 免费a级毛片永久免费| 亚欧免费无码aⅴ在线观看| 亚洲精品无AMM毛片| 亚洲AV无码一区二区三区系列| 在线观看成人免费| 日韩精品在线免费观看| 精品久久久久久亚洲综合网| 亚洲福利视频导航| 亚洲成av人在片观看| 一个人看的www在线观看免费 | 麻豆国产入口在线观看免费| 国产一级a毛一级a看免费视频 | 国产高清不卡免费视频| 亚洲av无码片vr一区二区三区| 91亚洲精品第一综合不卡播放| 亚洲精品综合久久| 妞干网在线免费观看| 无码国产精品一区二区免费vr| 成人一级免费视频| 亚洲精品无码不卡在线播放| 亚洲成av人片在线看片| 亚洲人成中文字幕在线观看| 免费在线观看视频a| 成人毛片免费在线观看| 最近在线2018视频免费观看| 中文字幕在线免费看线人| 麻豆91免费视频| 亚洲AV无码一区二区三区久久精品| 久久精品国产亚洲AV无码麻豆| 亚洲欧洲美洲无码精品VA|