10、HibernateTemplate原理

import org.hibernate.Session;
public class MyHibernateTemplate {

    public void executeWithNativeSession(MyHibernateCallback callback) {
        Session s = null;
        try {
            s = getSession();
            s.beginTransaction();
            // 要使用MyHibernateTemplate 对自定义的方法生成前后的模板,需要 对外发布一个接口MyHibernateCallback,并给调用方法一个 session,让他自己去定义要实现的逻辑。
            callback.doInHibernate(s);
            s.getTransaction().commit();
        } catch (Exception e) {
            s.getTransaction().rollback();
        } finally {
            //...
        }
    }

    private Session getSession() {
        // TODO Auto-generated method stub
        return null;
    }
    
    public void save(final Object o) {
        new MyHibernateTemplate().executeWithNativeSession(new MyHibernateCallback() {
            public void doInHibernate(Session s) {
                s.save(o);
            }
        });
    }
  
    public static void main(String[] args) {
        new MyHibernateTemplate().executeWithNativeSession(new MyHibernateCallback() {
            public void doInHibernate(Session s) {
                s.save(null);
            }
        });
     }
}
import org.hibernate.Session;
public interface MyHibernateCallback {
    public void doInHibernate(Session s);
}

你可能感兴趣的:(10、HibernateTemplate原理)