이 글은 백기선님의 Inflearn 강좌 예제로 배우는 스프링 입문(개정판)을 정리한 내용입니다.DI는 의존성 주입을 의미한다. 의존성 주입이란 하나의 객체 A가 다른 객체 B를 사용(의존)해야 할 때, A의 코드 내부에서 B를 만드는 것이 아니라, 외부(IoC 컨테이
이 글은 백기선님의 Inflearn 강좌 예제로 배우는 스프링 입문(개정판)을 정리한 내용입니다.하나의 메서드를 실행할 때, 부수적으로 함께 실행되어야 하는 메서드들이 존재할 수 있다. 이러한 부수적인 메서드가 여러 곳에서 사용된다면 코드의 중복이 발생하고, 유지보수가
@SpringBootTest는 스프링 부트에서 통합 테스트를 실행하기 위해 사용되는 어노테이션이다. 먼저, @SpringBootTest는 @SpringBootApplication을 찾아서, 테스트를 위한 빈을 생성해준다. 덕분에, 테스트 환경에서 동일하게 의존성 주입(
스프링에서 JPA를 다루다보면 EntityManager 객체를 만나게 된다.EntityManager는 JPA 인터페이스의 일부로, 자바 객체(@Entity)를 DB에 저장된 데이터와 맵핑해주는 ORM 기술을 정의한 인터페이스이다. 이번 글에서는 EntityManager
이 글은 김영한 님의 실전! 스프링 부트와 JPA 활용-1 강의를 참고하여 작성한 글입니다.Setter가 열려있으면, 데이터가 변경될 수 있는 지점이 너무 많아서 유지보수가 어려워진다.즉시로딩(FetchType.EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적
스프링에서 EntityManger의 주요 기능 중 하나로 Dirty Check가 있다.EntityManger는 현재 트랜잭션에서 영속성 컨텍스트에 포함되어 있는 Entity객체에 수정이 발생할 경우, 트랜잭션이 커밋되는 시점에 내부적으로 UPDATE 쿼리를 생성하여 전
이 글은 김영한 님의 실전! 스프링 부트와 JPA 활용-1 강의를 참고하여 작성한 글입니다. 지연 로딩 JPA에서는 연관된 엔티티를 조회할 때, 2가지 옵션(Eager, Lazy)을 선택할 수 있다. Eager 옵션은 해당 엔티티를 조회할 때, 연관된 모든 엔티티를
Hibernate에서는 엔티티 객체에 대해 INSERT, UPDATE 등의 쿼리가 발생할 때, 현재 시간을 자동으로 저장해주는 @CreationTimestamp와 @UpdateTimestamp 어노테이션을 제공한다.@CreationTimeStamp는 INSERT 쿼리가
@Constraint 어노테이션을 활용하면 사용자가 원하는 Constraint와 Validation을 만들어 이를 적용할 수 있다. 개인 프로젝트 과정에서 String 타입의 필드(ex, 성별)를 Enum 타입으로 변환하여 저장할 필요가 생겼다. 그러나, 변환 과정에