SPRING

스프링 DB 2편 - 데이터 접근 활용 기술 (1)

illho 2023. 6. 11. 12:48

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2

 

스프링 DB 2편 - 데이터 접근 활용 기술 - 인프런 | 강의

백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 소개 | 인

www.inflearn.com

 

데이터 접근 기술 진행 방식 

 

SQLMapper

  • JdbcTemplate
  • MyBatis

ORM 관련 기술

  • JPA, Hibernate
  • 스프링 데이터 JPA
  • Querydsl

SQL Mapper 주요 기능

  • 개발자는 SQL만 작성하면 해당 SQL의 결과를 객체로 편리하게 매핑해준다.

 

ORM 주요 기능

  • 기본적인 SQL은 JPA가 대신 작성하고 처리해준다. 개발자는 저장하고 싶은 객체를 마치 자바 컬렉션에 저장하고 조회하듯이 사용하면 ORM 기술이 데이터베이스에 해당 객체를 저장하고 조회해준다.
  • JPA는 자바 진영의 ORM 표준이고, Hibernate는 JPA에서 가장 많이 사용하는 구현체이다.
  • 스프링 데이터 JPA , Querydsl은 JAP를 더 편리하게 사용할 수 있게 도와주는 프로젝트이다.

 

DB를 사용하지않고 메모리에서 테스트 데이터를 사용하는 경우

 

 

@EventListener : 스프링 컨테이너가 완전히 초기화를 다 끝내고, 실행 준비가 되었을 때 발생하는 이벤트이다. 스프링이 이 시점에 해당 애노테이션이 붙은 initData() 메서드를 호출해준다.

이 기능 대신 @PostConstruct 를 사용할 경우 AOP 같은 부분이 아직 다 처리되지 않은 시점에 호출될 수 있기 때문에, 간혹 문제가 발생할 수 있다.

@EventListener는 AOP를 포함한 스프링 컨테이너가 완전히 초기화 된 이후에 호출되기 때문에 이런 문제가 발생하지 않는다.

 

 

프로필(Profile)

스프링은 로딩 시점에 application.properties 의 spring.profiles.active 속성을 읽어서 프로필로 사용한다.

이 프로필은 로컬 , 운영 환경, 테스트 실행 등등 다양한 환경에 따라서 다른 설정을 할 때 사용하는 정보이다.

 

spring.profiles.active=local

 

/src/main/resources 하위의 application.properties 는 /src/main 하위의 자바 객체를 실행할 때 동작하는 스프링 설정이다.

스프링은 local 이라는 프로필로 동작한다. 따라서 @Profile("local)가 동작하고, testDataInit가 스프링 빈으로 등록된다.

 

 

실행하면 위와 같은 로그가 보인다.

 

test 프로필

/src/test/resources 하위의 application.properties 

이 위치의 프로퍼티스는 /src/test 하위의 자바 객체를 실행할 때 동작하는 스프링 설정이다.

주로 테스트 케이스를 실행할 때 동작한다.

 

spring.profiles.active=test

 

test라는 프로필로 동작하게 된다. 이 경우에는 @Profile("local")는 동작하지 않는다.

따라서 testDataInit 이라는 스프링 빈도 등록되지 않고, 초기 데이터도 추가하지 않는다.