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