2017-11-14 9 views
1

이미 하이버 네이트 및 임베디드 더비 작업이있는 기존 애플리케이션이 있습니다. 내 hibernate.cfg.xml로는기존 하이버 네이트 임베디드 더비 애플리케이션에 스프링 부트 추가

<property name="connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property> 
<property name="connection.url">jdbc:derby:data;create=true</property> 
<property name="connection.username">application</property> 
<property name="connection.password">password</property> 

<property name="hibernate.default_schema">my_application</property> 

모든 것이 잘 작동하고있다 그러나 나는이 프로젝트에 스프링 부팅을 추가 할 내가

은 sessionFactory에 개체를 만들 수 없습니다 무엇입니까 다음과 같은 설정이 있습니다. org.hibernate.service.spi.ServiceException : 요청 된 서비스를 만들 수 없습니다 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

나는 잘 모르겠지만 나는 경우 최대 절전 모드에서 sessionFactory를 보완합니다. 왜 내가 그럴 수 없어? 스프링 부트에서 내장 된 Derby를로드하는 유일한 방법입니까? 나는 스프링 부트가 데이터베이스와 어떤 관계도 가지길 원하지 않는다.

또한 스프링 부트를 추가 한 후에 스프링 부트를 전혀 실행하지 않더라도 내 log4j.properties 파일을 더 이상 읽지 않습니다.

답변

0

발견. 이

spring.jpa.show-SQL과 같은 application.properties을 설정하는 데 필요한 = 진정한 spring.jpa.hibernate.ddl 오토 = 갱신 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect .DerbyDialect

spring.datasource.url = JDBC : 더비 : 데이터, 생성 = 사실 spring.datasource.username = 응용 프로그램 spring.datasource.password = 비밀번호 spring.datasource.driver 클래스 이름 = 조직. apache.derby.jdbc.EbeddedDriver

spring.datasource.initialize = true

spring.jpa.properties.hibernate.current_session_context_class = org.springframework.orm.hibernate4.SpringSessionContext

내 부팅 응용 프로그램이

@SpringBootApplication 
@EntityScan("core.peristence.dtos") 
public class App { 

    public static void main(String[] args) { 
     SpringApplication.run(App.class, args); 
    } 

    @Bean 
    public HibernateJpaSessionFactoryBean sessionFactory() { 
     return new HibernateJpaSessionFactoryBean(); 
    } 

} 

같은 최대 절전 모드 빈을 필요로하고 내 서비스가를 autowire하기 수 sessionFactory가 다음과 같이 변경되었습니다.

@Service 
public class MyService { 

    @Autowired 
    private SessionFactory sessionFactory; 

... 

}