Hibernate SessionFactory与服务注册表

Vai*_*ain 6 hibernate upgrade sessionfactory

休眠4之前

会话连接的实现方式仅适用于SessionFactory。

例:

Configuration cfg=new Configuration();
Configuration cfg=cfg.configure(“mysql.cfg.xml”);
SessionFactory sf=cfg1.buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

休眠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;
Run Code Online (Sandbox Code Playgroud)

休眠4.3

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

例:

serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                configuration.getProperties()).build();
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. SessionFactory和ServiceRegistry有什么区别?
  2. 为什么需要ServiceRegistry概念?
  3. 与SessionFactory相比,引入ServiceRegistry有什么优势?
  4. b / w ServiceRegistryBuilder()和StandardServiceRegistryBuilder()有什么区别?

小智 0

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

第一的:

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

SessionFactory factory = con.buildSessionFactory(sr);
Run Code Online (Sandbox Code Playgroud)

第二:

Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

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