스프링 부트를 기반으로 테스트 코드 작성 시 자주 등장하는 테스트 어노테이션의 사용 상황과 기능에 대해 정리하고자 합니다. @SpringBootTest 어노테이션Annotation that can be specified on a test class that runs Spring Boot Based tests. @SpringBootTest 어노테이션은 스프링 부트 기반 테스트 시에 사용하는 어노테이션이다. 다음과 같은 기능과 특징을 가지고 있습니다. 1. Uses SpringBootContextLoader as the default ContextLoader when no specific @ContextConfiguration(loader=...) is defined. 💬 특정 @ContextConfigu..
OSIV - Open Session In ViewOSIV OnJPA에서 Entity Manager가 Hibernate에서 Session 역할을 수행합니다.spring.jpa.open-in-view: true (default)OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지합니다. (Lazy Loading…) 지연 로딩은 영속성 컨텍스트가 살아있어야 가능합니다. (영속성 컨텍스트는 기본적으로 데이터베이스 커넥션을 유지합니다.)OSIV가 on인 경우에 Service 계층에서 @Trasanctional이 끝나도 데이터베이스 커넥션이 끊기지 않는다. 지연로딩과 같이 프록시 객체가 초기화되는 경우가 있으므로 사용자에게 ..
요약내용!@Transactional과 try-catch를 같이 사용하면 예외가 발생해도 트랜잭션이 자동으로 롤백되지 않는 문제가 있습니다. 이는 트랜잭션의 롤백은 @Transactional 메서드가 예외를 던질 때만 발생하고, try-catch로 예외를 잡아버리면 트랜잭션이 정상적으로 커밋되기 때문입니다. @Transactional와 트랜잭션 처리트랜잭션 처리는 한 번에 이루어져야 하는 작업의 묶음으로 전체가 완료되거나 실패되는 처리를 의미합니다. (트랜잭션 처리에서 일부 성공은 허용되지 않음)@Transactionalpublic void test() { aService.doA(); bService.doB(); cService.doC();}doA(), doB(), doC()를 순차적으로 실행할 때,..
H2 In-Memory란For certain use cases (for example: rapid prototyping, testing, high performance operations, read-only databases), it may not be required to persist data, or persist changes to the data. This database supports the in-memory mode, where the data is not persisted.In-Memory는 데이터 영속적인 저장 및 변경을 요구하지 않는 상황에서 사용되곤 한다. 예를 들어 빠른 프로토타입 개발이나 테스트 작업에 사용된다. In some cases, only one connection to ..