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