源代码:
public Serializable save(final Object entity) throws DataAccessException {
return executeWithNativeSession(new HibernateCallback<Serializable>() {
public Serializable doInHibernate(Session session) throws HibernateException {
checkWriteOperationAllowed(session);
return session.save(entity);
}
});
}
下面,我们来模拟它的一个实现
1. 定义一个MyHibernateCallBack的接口,并且将session作为参数传给这个接口
package com.huxin.springfirst.test;
public interface MyHibernateCallBack {
public void doInHibernate(String session);
}
2. 定义一个实现
package com.huxin.springfirst.test;
public class MyHibernateCallBackImpl implements MyHibernateCallBack {
public void doInHibernate(String session) {
System.out.println("我已经有了session,所以我现在可以调用保存的方法");
}
}
3. 写一个hibernateTemplete的类
package com.huxin.springfirst.test;
public class MyHibernateTemplete {
public void save(Object obj){
executeWithNativeSession(new MyHibernateCallBackImpl());
}
public void executeWithNativeSession(MyHibernateCallBack callBack){
String session = "我创建了一个session" ;
System.out.println("创建session");
System.out.println("开启事务");
callBack.doInHibernate(session);
System.out.println("提交事务");
System.out.println("关闭事务");
}
public static void main(String[] args){
MyHibernateTemplete mht = new MyHibernateTemplete();
Object obj = new Object();
mht.save(obj);
}
}