[SPRING] Spring, Hibernate 및 LocalSessionFactoryBuilder를 사용하여 sessionFactory를 구성하십시오.
SPRINGSpring, Hibernate 및 LocalSessionFactoryBuilder를 사용하여 sessionFactory를 구성하십시오.
스프링 3.2 및 최대 절전 모드 4를 사용하여 sessionFactory 빈을 만들려고합니다. 다음 코드를 사용했습니다. 그러나 문제는 buildSessionFactory ()가 더 이상 사용되지 않으며 buildSessionFactory (ServiceRegistry serviceRegistry)가 javadoc에서 대신 사용하도록 제안되었다는 것입니다. 그러나, 나는 ServiceRegistry가 무엇인지, 그리고 buildSessionFactory (ServiceRegistry serviceRegistry)를 사용하는 방법을 이해할 수 없다.
@Configuration
public class AppConfig {
...
@Bean
public SessionFactory sessionFactory() {
return new LocalSessionFactoryBuilder(dataSource())
.scanPackages("com.mypackages")
.addProperties(hibernateProperties())
.buildSessionFactory();
}
}
해결법
-
==============================
1.ServiceRegistry 인터페이스는 서비스의 개념 (Hibernate 4에서 새로 추가 된)과 관련이있다. 서비스는 Hibernate에 다양한 기능을 제공하고 사용자가 다른 구현을 플러그인 할 수있는 클래스이다. 자세한 내용은이 wiki 페이지를 참조하십시오.
ServiceRegistry 인터페이스는 서비스의 개념 (Hibernate 4에서 새로 추가 된)과 관련이있다. 서비스는 Hibernate에 다양한 기능을 제공하고 사용자가 다른 구현을 플러그인 할 수있는 클래스이다. 자세한 내용은이 wiki 페이지를 참조하십시오.
당신은 buildSessionFactory () 메소드가 buildSessionFactory (ServiceRegistry serviceRegistry) 메쏘드를 위해 Hibernate의 Configuration 클래스에서 더 이상 사용되지 않는다. (Spring이없는) 순수한 Hibernate 환경에서는 ServiceRegistry의 인스턴스를 다음과 같이 초기화 할 것이라고 가정한다.
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; }
하지만 이제는 deprecated 메소드 인 buildSessionFactory ()가 ServiceRegistry와 동일한 초기화 작업을 수행합니다.
Spring의 LocalSessionFactoryBuilder 클래스는 Hibernate의 Configuration 클래스의 확장 일 뿐이다. 그러나 Spring의 모든 특정 작업은 Overriden 메소드 LocalSessionFactoryBuilder.buildSessionFactory ()에서 수행되므로 Spring 환경에서 buildSessionFactory (ServiceRegistry serviceRegistry) 메소드를 사용할 수 없습니다. 아무것도 똑같은 작업을 수행하는 buildSessionFactory ()를 사용하는 것이 좋습니다. AppConfig에서 @SuppressWarnings ( "deprecation") 메소드에 주석을 달고 Spring이 Hibernate 4와 더 나은 통합을 제공 할 때까지 기다리도록하자.
-
==============================
2.또한 체인을 사용하지 않고 코드를 작성할 수 있습니다.
또한 체인을 사용하지 않고 코드를 작성할 수 있습니다.
LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource()); builder.scanPackages("com.mypackages"); builder.addProperties(hibernateProperties()); return builder.buildSessionFactory();
@SuppressWarnings ( "deprecation")과 약간 자세한 설명은 있지만 냄새는 아닙니다.
-
==============================
3.Artem Shafranov가 제공 한 대답은 완전히 정확하지 않으며, 내가 한 것처럼 당신은 매우 혼란스러운 문제를 겪을 수도 있습니다.
Artem Shafranov가 제공 한 대답은 완전히 정확하지 않으며, 내가 한 것처럼 당신은 매우 혼란스러운 문제를 겪을 수도 있습니다.
사용하는 경우
hibernate.hbm2ddl.auto
hbm2dll의 연결 풀이 UserSuppliedConnectionProviderImpl (기본적으로 좋은 말 : null)로 설정되기 때문에 응용 프로그램이 시작되지 않습니다. 이 예외가 표시됩니다.
org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
그 이유는 hbm2dll에서 사용하지만 Spring과 잘 작동하지 않는 ServiceRegistry와 관련이 있기 때문입니다. 제안 된 프로그래밍 방식 세션 구성 방법 중 많은 것을 사용하면 hbm2dll이 실행될 때 적절한 참조가 아직 없습니다.
나를 위해 일한 유일한 방법은 다음과 같습니다.
@Inject DataSource datasource; @Bean @SuppressWarnings("deprecation") public SessionFactory sessionFactory() throws IOException{ LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); sessionFactoryBean.setPackagesToScan("nl.your.model"); sessionFactoryBean.setHibernateProperties(hibernateProperties()); sessionFactoryBean.setDataSource(datasource); sessionFactoryBean.afterPropertiesSet(); return sessionFactoryBean.getObject(); }
LocalSessionFactoryBuilder 사용에 실패했습니다. 놀랍게도 StandardServiceRegistryBuilder를 사용하여 실패했습니다.
정말 혼란스러운 문제.
from https://stackoverflow.com/questions/14806400/configure-sessionfactory-with-spring-hibernate-and-localsessionfactorybuilder by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] CrudRepository findOne ()과 JpaRepository getOne ()의 차이점 (0) | 2019.04.08 |
---|---|
[SPRING] RestEasy에 Spring beans 삽입하기 (0) | 2019.04.08 |
[SPRING] 스프링 / 자바 스케줄링 태스크 (0) | 2019.04.08 |
[SPRING] 메소드 레벨 보안으로 AccessDenied 처리 (0) | 2019.04.08 |
[SPRING] 스프링 부트 이미지 업로드 및 검색 (0) | 2019.04.08 |