[Spring DB 2편] 1. 기본

HJ·2023년 2월 2일
0

Spring DB 2편

목록 보기
1/11
post-thumbnail
post-custom-banner

김영한 님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의를 보고 작성한 내용입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard


1. 데이터 접근 기술

1-1. SQLMapper

  • 개발자는 SQL만 작성하면 된다

  • SQL을 작성하면 해당 SQL의 결과를 객체로 편리하게 매핑해준다

  • JDBC를 직접 사용할 때 발생하는 중복을 제거해주고 여러 편리한 기능을 제공


1-2. ORM 기술

  • SQL Mapper 기술과 다르게 JPA는 기본적인 SQL을 대신 작성하고 처리해준다

  • 개발자가 저장하고 싶은 객체를 자바 컬렉션에 저장하고 조회하듯이 사용하면 된다

  • ORM 기술이 데이터베이스에 해당 객체를 저장하고 조회해준다

  • 자바에서 ORM을 사용할 때는 JPA 인터페이스를 사용하고 구현체로 Hibernate를 사용

  • 스프링 데이터 JPA, Querydsl은 JPA를 편리하게 사용할 수 있도록 도와주는 프로젝트




2. 기본

2-1. DTO

  • Data Transfer Object

  • 기능은 없고 데이터만 전달하는 용도로 사용되는 데이터 전송 객체

  • DTO의 위치는 DTO를 최종적으로 호출하는( 사용하는 ) 클래스가 있는 패키지

  • 따로 DTO 패키지를 만들어도 괜찮다


2-2. @EventListener

  • ApplicationReadyEvent.class : 스프링 컨테이너가 완전히 초기화를 다 끝내고, 실행 준비가 되었을 때 발생하는 이벤트

  • @EventListener(ApplicationReadyEvent.class) : 위 이벤트가 발생하면 스프링이 해당 어노테이션이 붙은 메서드를 호출

  • @PostConstruct 는, AOP 같은 부분이 아직 다 처리되지 않은 시점에 호출될 수도 있다

  • @EventListener 는 AOP를 포함한 스프링 컨테이너가 완전히 초기화된 후에 호출된다

  • 스프링이 자동으로 수행하게 하려면 메서드를 가진 클래스가 스프링 빈으로 등록되어 있어야한다


2-3. 설정 파일 지정 및 빈 등록

@Import(MemoryConfig.class)
@SpringBootApplication(scanBasePackages = "hello.itemservice.web")
public class ItemServiceApplication { 
    public static void main(String[] args) {
		SpringApplication.run(ItemServiceApplication.class, args);
	}

    @Bean
	@Profile("local")
	public TestDataInit testDataInit(ItemRepository itemRepository) {
		return new TestDataInit(itemRepository);
	}
 }
  • @Import : 설정 파일 지정

  • scanBasePackages : 컴포넌트 스캔 범위 지정

  • @Profile

    • 특정 프로필인 경우에만 동작한다

    • 위의 코드는 프로필이 local 인 경우에만 스프링 빈을 등록한다


2-4. 프로필

  • 프로필은 로컬 PC, 운영환경, 테스트실행 등 환경에 따라 다르게 설정할 때 사용하는 정보
  • 스프링은 로딩 시점에 application.propertiesspring.profiles.active 속성을 읽어서 프로필로 사용

    • ex> spring.profiles.active=local : 스프링이 local 이라는 프로필로 동작

    • 설정 하지 않으면 "default" 로 프로필이 실행된다

  • 경로에 따른 차이

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

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

post-custom-banner

0개의 댓글