ssh中怎么实现hibernate的执行sql拦截
最主要的是不知道怎么配置文件,以及怎么使用。谢谢指点

解决方案 »

  1.   

    是在hibernate执行sql语句么public Integer batchSave(final String sql){ 
      Session session = this.getSession(); 
      Transaction tx = session.beginTransaction(); 
      Integer result = -1; 
      try { 
       tx.begin(); 
       result = session.createSQLQuery(sql).executeUpdate(); 
       session.flush(); 
       tx.commit(); 
      } catch (DataAccessException e) { 
       e.printStackTrace(); 
       if (tx != null) { 
        tx.rollback(); 
       } 
      } finally { 
       session.close(); 
      } 
      return result; 
    }  
      

  2.   


    sql拦截?????
    是指控制事物么?
      

  3.   


    我是想在程序里拦截hibernate之心的sql 语句,我看hibernate有拦截器可以操作,但是不知道怎么用
      

  4.   


    我的需求很简单就是拦截执行的sql,只要拦截到sql就行
      

  5.   

    楼主想做数据权限对吗? 
    就是当执行SQL时,拦截到到执行SQL的方法,然后获取到SQL,进行你的业务加工,再把SQL返回,通常都是加上数据权限之类的呵呵。不知道对不对?不过你这个分太少了。。我就讲下思路吧。当时我作的时候是这样做的:
    我们都知道,spring整合hibernate以后执行SQL和HQL调用的方法 是:
    createQuery(String sql,....)  createSQLQuery(String sql)..我用了自定义的annotation 和aspectj的配合
    在要拦载的方法之上加上标注,然后用aspectj对有该标注的方法的控制流内拦载createSQLQuery()和createQuery()这两个方法。。再对SQL进行加工。当然要加工的东西,已经放到annotaion里面了。。
      

  6.   

    aspectj里面有一个控制流的概念。。
      以前学aspectj的时候,一直就没有搞透。。后来做了这个数据权限,可谓是打通任督二脉啊,把控制流的概念搞清楚了。