Projections엔티티 대신에 DTO를 편리하게 조회할 때 사용전체 엔티티가 아니라 만약 회원 이름만 딱 조회하고 싶으면? public interface UsernameOnly { String getUsername();}조회할 엔티티의 필드를 getter 형식으로 지정하면 해당 필드만 선택해서 조회(Projection)public interface MemberRepository ... { List findProjectionByUsername(@Param("username") String username);}메서드 이름은 자유, 반환 타입으로 인지@Testpublic void projection() { Team teamA = new Team("teamA"); em.persist(team..
분류 전체보기
스프링 데이터 JPA가 실제 어떻게 동작하는지 코드 레벨로 들어가서 살펴보자.스프링 데이터 JPA 구현체 분석스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체가 있다.org.springframework.data.jpa.repository.support.SimpleJpaRepository리스트 12.31 SimpleJpaRepository@Repository@Transactional(readOnly = true)public class SimpleJpaRepository ... { @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity)..

사용자 정의 리포지토리 구현스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성한다.그렇게 되면 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현해야 하는 경우 구현해야 하는 기능이 너무 많다그래서 다양한 스타일로 인터페이스의 메서드를 직접 구현하고 싶은 경우가 있다.JPA 직접 사용( `EntityManager` )스프링 JDBC Template 사용MyBatis 사용데이터베이스 커넥션 직접 사용 등등...Querydsl 사용사용자 정의 인터페이스public interface MemberRepositoryCustom { List findMemberCustom();}사용자 정의 인터페이스 구현 클래스@RequiredArgsConstructorpublic class..

💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다 어떤 작업이 오래 걸려 서비스 응답 속도에 영향을 주는 경우, 애플리케이션의 성능 향상을 위해 멀티 스레드 환경을 고려할 수 있다. 멀티 스레드를 통해 여러 작업 스레드가 동시에 실행되어 응답 속도와 처리량을 개선할 수 있다. 그러나, 여러 스레드가 동시에 동일한 데이터에 접근하고 수정할 경우 데이터 일관성이 깨지거나 레이스 컨디션(Race Condition)과 같은 문제가 발생할 수 있다. 이는 작업이 의도한 대로 처리되지 않게 만들어, 데이터 무결성을 손상시킬 위험이 있다. 강의에서는 상품 재고를 관리하는 간단한 재고 시스템을 구현하여 멀티 스레드 환경에서 발생하는 동시성 문제를 마주하고 발생 원인을 분석한다. ..