Callback:回调/钩子函数

package com.bjsxt.dao.impl;

import javax.annotation.Resource;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;

import com.bjsxt.dao.UserDao;
import com.bjsxt.model.User;

@Component("userDaoImpl")
public class UserDaoImpl implements UserDao {
private HibernateTemplate hibernateTemplate;

public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

@Resource(name = "hibernateTemplate")
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}

@Override
public void save(User user) {
hibernateTemplate.save(user);
}

}


ps:

import org.hibernate.Session;

public interface MyHibernateCallback {
public Object doInHibernate(Session session);
}


import org.hibernate.Session;

public class MyHibernateTemplate {
public void executekWriteOperationAllowed(MyHibernateCallback callback) {
Session session = null;
try {
session = getSession();
session.beginTransaction().begin();

callback.doInHibernate(session);

session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
} finally {
if (session != null) {
session.clear();
}
}

}

private Session getSession() {
return null;
}

public void save(final Object o) {
new MyHibernateTemplate()
.executekWriteOperationAllowed(new MyHibernateCallback() {
@Override
public Object doInHibernate(Session session) {
return session.save(o);
}
});
}
}