我正在学习 java servlet 和 hibernate。我每个都有单独的工作示例,现在正在尝试将 hibernate 示例合并到 http servlet 中。
我的简单 hibernate 示例从此代码开始
factory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = factory.openSession();
当通过 http get 调用 http servlet 时,我知道它首先调用构造函数,然后调用 doGet 方法。
现在我的问题(请对我轻松一点,因为我是这里的新手):从 servlet 调用 hibernate 初始化代码的可接受方法是什么?我是否将上面的初始化代码放在构造函数方法中?
最佳答案
管理 hibernate session 的方法有很多。最常见的方法之一是使用 HibernateUtil 类。通常的实现是,SessionFactory
是静态初始化的,这意味着初始化只会完成一次(在类加载时)。然后它公开一个静态方法来获取构建的 SessionFactory 实例。这是 dzone 的实现示例。
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
对于 session 的打开和关闭,通常将其与请求处理视为一个单元,因此您可以在 doGet 的开头调用
或 HibernateUtil.getSessionFactory().openSession()
doPost
并确保在方法结束之前关闭 session 。
关于java - 如何从 servlet 内初始化 hibernate session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569343/