[java] 최대 절전 모드에서 buildSessionFactory () 구성 메소드가 더 이상 사용되지 않습니까?

Hibernate 버전을 3.6.8에서 4.0.0으로 업데이트했을 buildSessionFactory()때이 줄에서 더 이상 사용되지 않는 메소드 에 대한 경고가 표시 됩니다.

private static final SessionFactory sessionFactory =
         new Configuration().configure().buildSessionFactory();

Javadoc은 다른 방법을 사용하도록 권장합니다

buildSessionFactory(ServiceRegistry serviceRegistry)

그러나 설명서 에서 더 이상 사용되지 않는 변형을 발견했습니다.

이 작은 오해를 도와 주실 수 있습니까?



답변

예, 더 이상 사용되지 않습니다. SessionFactory를 다음으로 바꾸십시오.

에서 최대 절전 모드 4.0, 4.1, 4.2

private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

public static SessionFactory createSessionFactory() {
    Configuration configuration = new Configuration();
    configuration.configure();
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
            configuration.getProperties()). buildServiceRegistry();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}

최신 정보:

Hibernate 4.3 에서는 ServiceRegistryBuilder가 더 이상 사용되지 않습니다 . 대신 다음을 사용하십시오.

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


답변

예, 더 이상 사용되지 않습니다. http://docs.jboss.org/hibernate/core/4.0/javadocs/org/hibernate/cfg/Configuration.html#buildSessionFactory ()는 발견 한 다른 방법을 대신 사용하도록 지시합니다 ( buildSessionFactory(ServiceRegistry serviceRegistry)).

문서는 릴리스마다 복사되며 아직 업데이트되지 않았을 수 있습니다 (매번 릴리스마다 매뉴얼을 다시 작성하지는 않음). 따라서 Javadoc을 신뢰하십시오.

이 변경 사항에 대한 자세한 내용은 다음을 참조하십시오.

몇 가지 추가 참조 :


답변

또는

public class Hbutil {

    private static SessionFactory sessionFactory;
    private static ServiceRegistry serviceRegistry;

    private static SessionFactory configureSessionFactory() throws HibernateException {
        Configuration configuration = new Configuration();
        configuration.configure();
        serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        return sessionFactory;
    }

    public static SessionFactory getSessionFactory() {
        return configureSessionFactory();

    }
}


답변

Hibernate 4.3.0에서 작동하도록 코드가 확인되었습니다. XML 파일 이름 매개 변수를 제거하거나 고유 한 경로를 제공 할 수 있습니다. 이것은 다른 게시물과 유사하지만 오타가 수정되었지만이 게시물은 정확합니다.

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;


Configuration configuration = new Configuration();
configuration.configure("/com/rtw/test/hiber/hibernate.cfg.xml");
ServiceRegistry  serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);


답변

JBoss 문서는 100 % 완벽하게 유지 관리되지 않습니다. JavaDoc의 말 과 함께 진행 하십시오 buildSessionFactory(ServiceRegistry serviceRegistry).


답변

최신 최대 절전 모드 릴리스 4.3.0 이상 에서 SessionFactory 객체 를 생성하는 더 좋은 방법 은 다음과 같습니다.

Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());


답변

다른 버전의 문서간에 불일치가 발견되는 것은 드문 일이 아닙니다. 대부분의 개발자는 문서를 집안일로 여기고 그것을 꺼리는 경향이 있습니다.

일반적으로, javadoc이 한 가지를 말하고 비 javadoc 문서가 모순되는 경우 javadoc이 더 정확할 가능성이 있습니다. 프로그래머는 javadoc의 “소스”가 코드와 동일한 파일에 있기 때문에 코드를 변경하여 javadoc을 최신 상태로 유지할 가능성이 높습니다.

@deprecated태그 의 경우 javadoc이 더 정확하다는 것은 확실합니다. 개발자는 신중하게 고려한 후 사용을 중단하고 … 일반적으로 사용하지 않습니다.