java 回调机制示例

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

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();
                            }
                       } );
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值