【发布时间】:2021-11-04 10:06:44
【问题描述】:
我正在构建一个产品管理系统,并准备了我的数据库 pojos。之后我想使用单例 sessionFactory 而不是在每个类中使用一个新的。当我创建和构建一个 Java 类时;
package Controller;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class SFController {
private static SFController instance = null;
private static SessionFactory sessionFactory;
private static StandardServiceRegistry serviceRegistry;
private SFController(){
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
public static SFController getInstance(){
if(instance == null){
instance = new SFController();
}
return instance;
}
public synchronized static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
没有错。但我无法弄清楚如何在我的控制器页面中正确使用它。 我就是这样尝试的;
package Controller;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class TryObject {
SFController newObject = SFController.getInstance();
Session session = newObject.getSessionFactory();
}
TryObject 方法的第二行说将 Session 更改为 SessionFactory。即使我这样做,我也无法到达 session.save() 或 session.beginTransaction(); 尝试了更多的单例示例,但无法弄清楚。如果你能告诉我我做错了什么,我会很高兴。
【问题讨论】:
标签: hibernate singleton sessionfactory