Hibernate SessionFactory vs Service Registry

时间:2014-05-28 06:56:25

标签: hibernate upgrade sessionfactory

在Hibernate 4之前

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

示例:

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

Hibernate 4.0,4.1,4.2

它随着ServiceRegistry的概念而改变,实现的方式是使用ServiceRegistry&会话工厂。

示例:

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

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

Hibernate 4.3

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

示例:

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

我的问题是:

  1. 有什么区别黑白会话室& ServiceRegistry?
  2. 为什么需要ServiceRegistry的概念?
  3. 通过SessionFactory引入ServiceRegistry有什么好处?
  4. b / w ServiceRegistryBuilder()和& StandardServiceRegistryBuilder()?

1 个答案:

答案 0 :(得分:0)

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

首先:

StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
.configure("hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
SessionFactory factory = meta.getSessionFactoryBuilder().build();

第二个:

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

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