Skip to content

Latest commit

 

History

History
58 lines (38 loc) · 2.07 KB

TIL220628.md

File metadata and controls

58 lines (38 loc) · 2.07 KB

Daily to do list

Java


Spring

데이터 접근 기술


CS


알고리즘


오늘의 회고

220628 SPRING

데이터 접근 기술 테스트

테스트는 다른 테스트와 격리해야 한다. 테스트는 반복해서 실행할 수 있어야 한다.

테스트가 끝날 때 마다 DELETE SQL을 할 수 있지만 이 방법은 궁극적인 해결책이 아님. 만약 실행하는 도중에 에러가 발생하면 delete를 못함. ** 트랜잭션 롤백으로 해결 가능 (BeforeEach, AfterEach)

@Transactional = 트랜잭션을 자동으로 해주는 애노테이션 (BeforeEach, AfterEach를 자동으로 해줌)

@Transactional 원리 : 테스트가 아닌 본 스프링에서는 로직이 성공적으로 수행되면 커밋하도록 동작 하지만 >> 테스트에서는 특별하게 동작 테스트가 끝나면 트랜잭션을 자동으로 롤백시켜준다.(테스트 후 다시 원상복구 테스트기에)

———————————————— 테스트 - 임베디드 모드 DB

DB를 애플리케이션에 내장해서 함께 실행하는 모드로 임베디드 모드 애플리케이션이 종료되면 임베디드 모드로 동작하는 h2 데이터베이스도 함께 종료되고 데이터도 사라진다. 쉽게 말하면 애플리케이션에서 라이브러리처럼 동작…

스프링 부트 - 기본 SQL 스크립트를 사용해서 데이터베이스를 초기화하는 기능 제공 스프링부트는 SQL 스크립트를 실행해서 애플리케이션 로딩 시점에 데이터베이스를 초기화하는 기능 제공 = resources/schema.sql <<

——————————— 테스트 - 스프링부트와 임베디드 모드

스프링부트는 별다른 설정이 없으면 임베디드 데이터베이스를 사용한다.  테스트에서 이렇게 주석처리를 해서 데이터베이스에 접근하는 모든 설정 정보를 삭제하면 이렇게 별다른 정보가 없으면 스프링 부트는 임베디드 모드로 접근하는 데이터소스를 만들어서 제공