programing

스프링 부팅 데이터 소스 커밋 문제

telecom 2023. 6. 29. 19:47
반응형

스프링 부팅 데이터 소스 커밋 문제

내 애플리케이션은 Spring-Boot 1.4.1.REASE를 사용하며 내 데이터 소스의 구성은 다음과 같습니다.

spring:
  datasource:
    url: ***
    username: ***
    password: ***
    driver-class-name: oracle.jdbc.driver.OracleDriver
    initial-size: 1
    max-active: 100
    max-idle: 30
    min-idle: 1
    max-wait: 0
    pool-prepared-statements: true
    max-open-prepared-statements: 3

문제는 통합 테스트의 마지막 사례가 다음을 포함하고 있는지 여부입니다.@Sql설정 논리에 포함되어 있으며 마지막 설정 SQL을 커밋하지 못합니다.케이스의 재주문과 DB를 준비할 수 있는 셋업 로직이 있는 케이스가 소수에 불과하기 때문에 문제가 발생하는 경우는 거의 없습니다.Oracle DB에 대한 구성 외에는 없습니다. 구성은 다음과 같습니다.ConfigClass.

@SpringBootTest(classes = ConfigClass.class)
public class EtcTest {

    @After
    public void teardown() {
        // teardwon X, Y, & Z
    }

    @Test
    @Sql("setupX.sql")
    @Sql("setupY.sql")
    @Sql("setupZ.sql")
    public void get_fromDb() {
        List<Etc> list = buildExpectedList();
        Obj expected = buildExpected();
        Obj actual = getCallToAPI();

        assertThat(rs.getX()).isEqualTo(expected.getX());
        assertThat(rs.getY()).isEqualTo(expected.getY());
        assertThat(rs.getZ()).containsAll(list);
    }
}

위의 경우, 예를 들어 마지막 통합 사례인 경우, 마지막 SQL을 커밋하지 못하는 문제@Sql주석, 즉SetupZ.sql하지만 데이터가 완전히 없어진 것은 아니고, 기본 키를 삽입하고,columnA또는columnB마치 여기서 뭔가가 정말 잘못된 것 같습니다.

일부 구성의 존재 또는 부재가 이 문제를 야기합니까?그렇지 않다면 그 이유는 무엇일까요?

작업할 수 있습니다.@Transactional테스트. 이렇게 하면 테스트를 실행하여 결과를 확인하고 BD를 테스트 전 상태로 롤백할 수 있습니다.

참조 http://docs.spring.io/spring/docs/4.3.11.RELEASE/spring-framework-reference/htmlsingle#testcontext-tx-enabling-transactions

당신은 JPA를 지속적으로 사용하려고 합니다.다음 설정을 사용할 수 있습니다.

spring.jpa.show-sql=true

그러면 무엇이 잘못되었는지 알 수 있습니다.

실제 데이터베이스 대신 테스트 클래스를 위해 안녕하세요. DB2, derby, h2와 같은 In-Memory 데이터베이스를 사용할 수 있습니다. 이것은 문제에 대한 해결책을 제공합니다.

코드 예제의 경우 아래 URL(Stack overflow link) Spring data jpa repository In-memory 테스트 사례를 찾을 수 있습니다.

이는 Junit 및 Spring/Hibernate 내에서 충돌하는 라이브러리 때문이었습니다.최신 Spring & Junit 버전으로 업데이트하고 Java8로 업데이트하면 문제가 사라집니다.

언급URL : https://stackoverflow.com/questions/42573443/spring-boot-datasource-commit-trouble

반응형