zoukankan      html  css  js  c++  java
  • Hibernate中Session的几个方法的简单说明

           Hibernate对普通JDBC的操作进行了轻量级的封装,使得开发人员可以利用Session对象以面向对象的思想来实现对关系数据库的操作。

    一般通过Configuration对象读取相应的配置文件来创建SessionFactory,然后通过SessionFactory对象获取Session对象,获取Session对象之后,我们就可以相关数据的操作了。

    下面来介绍一下Session对象的几种方法:

     

    1、Session.save()
         Session.save(Object obj):把瞬时状态对象obj加入到Session缓存中,使之成为持久化对象;选用映射文件指定的标识生成ID;当Session缓存被清理时,向数据库发出一条insert语句,在数据库中新增一条与该持久化对象相应的记录。
         在执行Session.save(obj)后,Session清理缓存之前,如果obj对象属性被修改,那么最终存入数据库的值将是最后修改后的值,此过程中ID不能被修改。
     1 //新增一个用户对象   
     2 public void addUser(User user) {  
     3         Session session = HibernateUtil. currentSession ();  
     4         Transaction ts = null ;  
     5         try {  
     6             ts = session.beginTransaction();  
     7             session.save(user);  
     8             ts.commit();  
     9         } catch (Exception e){  
    10             ts.rollback();  
    11             System. out .println( "---error---" );  
    12             e.printStackTrace();  
    13         } finally {  
    14             HibernateUtil. closeSession ();  
    15         }  
    16     }  
    2、Session.delete()
           使用delete()方法删除数据。如果传入的参数是持久化对象,Session就计划执行一个delete语句。如果传入的参数是游离态对象,就会是游离态对象被Session关联,使它变为持久化对象,然后计划执行一个delete语句。
           Session只有在清理缓存的时候才执行delete语句;只有当调用Session的close()方法是,才会从Session的缓存中删除该对象。
     1 public void removeUser() {  
     2         Session session = HibernateUtil. currentSession ();  
     3         Transaction ts = null ;  
     4         User user = null ;  
     5         try {  
     6             ts = session.beginTransaction();  
     7             user = (User)session.get(User. class , new Integer( 1 )); //加载一个持久化对象  
     8             session.delete(user); //计划执行一个deleted操作  
     9             ts.commit(); //在清理缓存时,数据库执行deleted操作  
    10         } catch (Exception e){  
    11             ts.rollback();  
    12             System. out .println( "---error---" );  
    13             e.printStackTrace();  
    14         } finally {  
    15             HibernateUtil. closeSession (); //从缓存中删除User对象,关闭Session  
    16         }  
    17     }  
    18   
    19   
    20         Session session = HibernateUtil. currentSession ();  
    21         Transaction ts = null ;  
    22         try {  
    23             ts = session.beginTransaction();  
    24             /** 
    25             * 假设user是一个游离态对象,调用session.delete(user)会使其先变为 一个持久化对象,然后再计划执行一个deleted操作 
    26             */  
    27             session.delete( user );  
    28             ts.commit(); //在清理缓存时,数据库执行deleted操作  
    29         } catch (Exception e){  
    30             ts.rollback();  
    31             System. out .println( "---error---" );  
    32             e.printStackTrace();  
    33         } finally {  
    34             HibernateUtil. closeSession (); //从缓存中删除User对象,关闭Session  
    35
    3、Session.get()
         如果不确定数据库中是否有匹配的记录存在,即可使用get()方法加载对象,使用get()方法会立刻访问数据库,如果数据库中不存在匹配的记录,则会返回null。
     1 //使用get()方法加载一个指定id的User对象   
     2 public   void  getUserById( int  id) {  
     3         Session session = HibernateUtil. currentSession ();  
     4         Transaction ts =  null ;  
     5         User  user  =  null ;  
     6          try {  
     7             ts = session.beginTransaction();  
     8             user = (User)session.get(User. class , id);  
     9             ts.commit();  
    10         } catch (Exception e){  
    11             ts.rollback();  
    12             System. out .println( "---error---" );  
    13             e.printStackTrace();  
    14         } finally {  
    15             HibernateUtil. closeSession ();  
    16         }     
    17   }  
    4、Session.load()
         load()方法返回对象的代理,只有在返回对象被调用是Hibernate才会发出SQL语句查询对象。如果指定的记录不存在,则会抛出异常,这个与get()方法是不同的。
     1 //使用load()方法加载一个指定id的User对象   
     2 public   void  getUserById( int  id) {  
     3         Session session = HibernateUtil. currentSession ();  
     4         Transaction ts =  null ;  
     5         User  user  =  null ;  
     6          try {  
     7             ts = session.beginTransaction();  
     8             user = (User)session. load (User. class , id);  
     9             ts.commit();  
    10         } catch (Exception e){  
    11             ts.rollback();  
    12             System. out .println( "---error---" );  
    13             e.printStackTrace();  
    14         } finally {  
    15             HibernateUtil. closeSession ();  
    16         }     
    17   }  

    待补充:

    5、Session.update()
     
    6、Session.beginTrasaction()
     
    7、Session.close()
     
    8、Session.connection()
     
    9、Session.saveOrUpdate()
  • 相关阅读:
    IOS 模块并且发布到NPM
    处理npm publish报错问题
    IOS 应用发布流程
    《温故而知新》JAVA基础八
    Beta冲刺 (5/7)
    Beta冲刺 (4/7)
    Beta冲刺 (3/7)
    Beta冲刺 (2/7)
    软件测试(团队)
    福大软工 · BETA 版冲刺前准备(团队)
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5720781.html
Copyright © 2011-2022 走看看