Java / Hibernate初学者问题理解以下代码

时间:2018-09-10 02:59:44

标签: java hibernate

package com.util;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception to track it
            System.err.println("SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Optional but can be used to Close caches and connection pools
        getSessionFactory().close();
    }

}

我正在尝试理解上面的代码。我是Java的初学者,很难理解以下内容。这是否意味着Configuration对象具有configure方法,而configure方法具有buildSessionFactory方法?

return new Configuration().configure().buildSessionFactory();

2 个答案:

答案 0 :(得分:1)

方法没有方法,方法返回对象,而那些对象具有方法。

在这里,Configuration有许多返回Confuguration的方法(因此该方法将返回被调用的对象)。这允许方法链接,以便在该对象上调用configure,然后在同一对象上调用buildSessionFactory。

更常见的方法链接示例是j​​ava.lang.StringBuilder类。您可以在相同的构建器对象上通过连续的append调用来构建字符串:

String example = new StringBuilder(“hello”)
    .append(“ “)
    .append(“world”)
    .toString();

答案 1 :(得分:0)

  1. 配置对象具有一个configure方法,该方法将hibernate.cfg.xml中指定的所有配置作为配置对象返回。此信息用于连接到数据库。
  2. 然后从配置对象中获取SessionFactory对象,该对象将用于创建连接到数据库的会话对象。
  

配置配置= null; SessionFactory factory = null;

     

配置=新   Configuration()。configure(“ com / app / cfgs / hibernate.cfg.xml”);   factory = cfg.buildSessionFactory();