Hibernate SessionFactory 与服务注册表

问题描述 投票:0回答:1

Hibernate 4 之前

会话连接的实现方式只有SessionFactory。

示例:

Configuration cfg=new Configuration();
Configuration cfg=cfg.configure(“mysql.cfg.xml”);
SessionFactory sf=cfg1.buildSessionFactory();

休眠4.0、4.1、4.2

随着ServiceRegistry的概念发生变化,实现方式是ServiceRegistry & SessionFactory。

示例:

 Configuration configuration = new Configuration();
 configuration.configure();

 serviceRegistry = new ServiceRegistryBuilder().applySettings(
            configuration.getProperties()).build();
 sessionFactory = configuration.buildSessionFactory(serviceRegistry);
 return sessionFactory;

休眠4.3

ServiceRegistryBuilder() 也已弃用并替换为 StandardServiceRegistryBuilder()。

示例:

serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                configuration.getProperties()).build();

我的问题是:

  1. SessionFactory 和 ServiceRegistry 有什么区别?
  2. 为什么需要ServiceRegistry的概念?
  3. 引入ServiceRegistry相对于SessionFactory有什么优势?
  4. ServiceRegistryBuilder() 和 StandardServiceRegistryBuilder() 有什么区别?
hibernate upgrade sessionfactory
1个回答
0
投票

可以通过两种方式访问SessionFactory对象

第一:

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(con.getProperties()).build();

SessionFactory factory = con.buildSessionFactory(sr);

第二:

Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();

它们都使用StandardServiceRegistry,但第二个更短,并且在configure()方法中使用StandardServiceRegistry,并且您在代码中看不到它

© www.soinside.com 2019 - 2024. All rights reserved.