분류 전체보기 (180) 썸네일형 리스트형 Spring Data JPA VS JPQL and QueryDsl #1. Spring Data JPA Java 애플리케이션에서 관계형 데이터베이스 (RDBMS)를 관리하는데 사용되고 Spring Framework 모듈은 JPA라는 ORM 표준 위에 추상화 계층을 제공한다. Spring Data JPA는 특정 인터페이스를 확장하여 Repository 인터페이스를 생성한다. Runtime 시 Spring Data JPA는 이러한 인터페이스의 구현을 자동으로 생성한다. 장점 네이밍 컨벤션에 맞춰서 메서드 이름만 작성하면 내부적으로 자동으로 SQL을 구성해준다. 이는 코드 생산성, 코드의 간결함, 가독성을 높일 수 있다. A. 메서드명을 find, get, count, delete 로 시작 B. By(검색 조건을 지정하며, 주로 And 또는 Or로 결합된.. Mapstruct @Mapping(target = , source = ) Mapstruct 에서는 ResponseDto에 포함될 필드들에 할당할 값의 출처를 @Mapping (target = "A", source = "B") 애너테이션을 사용하여 정할 수 있다. 형식 : @Mapping (target = "필드명", source = "필드 값으로 가져올 DB속 위치" Ex 1. @Mapper(componentModel = "spring") public interface LibraryBookMapper { //MemberBookMapper와는 다르게 source 에 . 을 사용한 이유는 //해당 필드들은 LibraryBook 엔티티에서 직접적인 field 로 가지고 있지 않고 //library 객체, book 객체를 통해 가져오는 것이기 때문. @Mapping(target = .. Spring Data JPA - 자동 완성 메서드 규칙 countByMember(Member member) MemberBook 테이블에서 전달된 member(memberId)와 연관된 row(가로행)을 카운팅한다. MemberBook 엔티티 클래스에는 Member member 필드가 있는데 이 필드의 테이블 명은 memberId 라고 설정해두었다. 즉, countByMember(Member member)은 Spring Data JPA에서 사용하는 자동 메서드로써 실제 Spring Data JPA는 자동으로 countByMember(Member member)를 아래의 SQL 쿼리문으로 변경. SELECT COUNT(*) FROM MemberBook WHERE memberId = ? countByMemberAndReturnedAtIsNull(Member memb.. JPQL 예시 @Repository public interface MemberBookRepository extends JpaRepository { int countByMemberAndReturnedAtIsNull(Member member); @Query("SELECT mb FROM MemberBook mb WHERE mb.member.id =:memberId AND mb.book.id =:bookId AND mb.returnedAt IS NULL") MemberBook findByMember_IdAndBook_IdAndReturnedAtIsNull(Long memberId, Long bookId); @Query("SELECT mb FROM MemberBook mb WHERE mb.member.id =:memberId".. #6. 유저의 행동 횟수 조건 reset = Spring Data JPA 자동메서드 [에러] 현재 user가 특정 도서관에서 책을 대여하는데 최대 5권까지 대여가 가능한 조건을 걸어뒀다. int rentalHistoryCount = memberBookRepository.countByMember(targetMember); if (rentalHistoryCount >= 5) { throw new BusinessLogicException(ExceptionCode.MAXIMUM_RENTAL_ALREADY); } targetLibraryBook.setBookStatus(Book.BookStatus.UNAVAILABLE); libraryBookService.saveLibraryBook(targetLibraryBook); countByMember()메서드는 Spring Data JPA에서 제공하는 .. #10. 싱글 프로젝트 일지 - MemberBook 도메인 - MemberBook 도메인 구조 - MemberBook 도메인은 회원이 대여한 책을 나타내는 도메인이다. 1. DTO 회원이 대여중인 책에 대한 응답을 나타내는 클래스로 각 상황마다 응답 속에 필요한 내용이 다르므로 3가지 종류로 만들었다. 1. 도서 대여 메서드에서 대여한 책에 대한 response 클래스 => 대여할 떄 반납 여부를 나타낼 필요가 없음. 2. 대여 기록 조회시 나오는 책에 대한 response 클래스 => 대여일, 대여일 기준 최대 대여 가능 기간, 반납 여부 필드로 가짐. 3. 대여 반납 메서드에서 반납한 책에 대한 응답을 나타내는 클래스 => 대여일, 반납일, 연체일, 메시지 (연체일이 있다면, 안내해주고 다음 대여 가능날 전달) 2. Entity 1. 대여중인 책에 대한 정보.. #9. 싱글 프로젝트 일지 - libraryMember 도메인 - LibraryMember 도메인 구조 - LibraryMember는 도서관에 등록된 회원에 대한 동작을 담당하는 도메인이다. 1. DTO 도서관별로 회원 조회하는 메서드의 응답에 대한 필드를 가지고 있는 DTO 클래스이다. 2. Entity 1. 도서관에 등록된 회원에 대한 DB속 테이블에 필요한 정보를 필드로 담고있다. 2. 연관관계에 있는 테이블과의 관계도를 필드로 담고 있다. 3. Mapper 도서관에 속한 회원 전체리스트 조회 메서드에 사용되며, LibraryMember 객체를 Dto로 변환하는 역할. 응답 데이터를 나타내는 ResponseDto에 있는 필드들을 매핑할 위치를 선언할 수 있다. @Mapper(componentModel = "spring") public interface Libr.. #8. 싱글 프로젝트 일지 - libraryBook 도메인 - LibraryBook 도메인 구조 - libraryBook 객체는 도서관에서 보관하는 책의 정보를 나타낸다. DB에서는 library 테이블과 book 테이블의 사이를 나타내는 조인 테이블. 1. Entity 도서관별로 보관중인 책, 책의 상태를 필드로 가진다. 1. Book Status는 그 책의 상태가 아닌, 도서관에 있는 그 책의 상태를 나타낸다. LibraryBook은 특정 도서관에 저장된 책을 나타내는 엔티티이므로 BookStatus를 가지는 것이 맞다. 2. 사용자가 책을 대여했을 때, 상태를 '대여중'으로 변경해야 하는데 book 엔티티에 bookStatus가 있다면 해당 book을 가진 모든 도서관에 bookStatus가 영향을 받는다. 그러므로 대여가 될 때 해당 bookStatusI.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 23 다음