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을 신뢰하십시오.
이 변경 사항에 대한 자세한 내용은 다음을 참조하십시오.
- 소스 코드 : https://github.com/hibernate/hibernate-core/commit/0b10334e403cf2b11ee60725cc5619eaafecc00b
- 티켓 : https://hibernate.onjira.com/browse/HHH-5991
몇 가지 추가 참조 :
답변
또는
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이 더 정확하다는 것은 확실합니다. 개발자는 신중하게 고려한 후 사용을 중단하고 … 일반적으로 사용하지 않습니다.