java 回调机制示例

来源:互联网 发布:软件开发行业利润率 编辑:程序博客网 时间:2024/05/17 22:44

---------------------------------

1 声明接口 

import org.hibernate.Session;

public interface IHibernateCallBack {
 public Object doInHibernate(Session session);   //hibernater -- Session
}

--------------------------------

/*
  * 执行方法(参数为接口  的实现类 )
  * */
 public Object execute(IHibernateCallBack hibernateCallback){
  Object obj = null;  
  Session session = null;
  Transaction ts = null;
  try {
   session = HibernateSessionFactory.getSession();
   ts = session.beginTransaction();
   
   if (hibernateCallback!=null)
    obj = hibernateCallback.doInHibernate(session);    -------------------------------- (当调用该方法的方法执行完成后,回来接着往下执行。)怎么理解我也将不清楚了。
   ts.commit();
  } catch(Exception e){
   ts.rollback();
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }  
  return obj;
 } 
}

----------------------------------

/*
  * 获得房间
  * 根据id
  * */
 @Override
 public House getHouseById(final Integer id) {    

          //   这里也可以传入 接口的实现类。
          return   (House)super.execute(    new IHibernateCallBack() {
                            //new  接口,匿名内部类
                           @Override
                            public Object doInHibernate(Session session) {
                            // TODO Auto-generated method stub
                                   return session.getNamedQuery("find_house_by_id").setInteger(0, id).uniqueResult();
                            }
                       } );
 }

原创粉丝点击