我在 Spring 3.1 和 Hibernate 3 中有一个项目。我正在尝试定义我的 DAO。我有一个抽象 DAO 类,其中包含获取会话、提交、回滚等方法。我的问题是将 SessionFactory 注入到此类中。我想知道是否有更好的方法来定义这个类。谢谢埃里克
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
public abstract class AbstractDAO {
@Autowired
private static SessionFactory sessionFactory;
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
protected static Session getSession() {
Session session = threadLocal.get();
if (session == null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
protected void begin() {
getSession().beginTransaction();
}
protected void commit() {
getSession().getTransaction().commit();
}
protected void rollback() {
try {
getSession().getTransaction().rollback();
}
catch (HibernateException ex) {
ex.printStackTrace();
}
close();
}
protected void close() {
try {
getSession().close();
}
catch (HibernateException ex) {
ex.printStackTrace();
}
threadLocal.set(null);
}
}