Q클래스를 사용해야하는 상황에서 import가 안 되는 현상이 발생먼저 위치가 올바르게 생성될 수 있도록 Settings -> Annotation Processors 들어가 enable annotation processing체크해주고 소스 디렉토리가 generated로 되어 있는지 확인해준다. querydsl 파일은 src내에 생성이 되면 안 되므로 src내에 생성 됐으면 삭제해주고 build/generated에 제대로 생성이 되었는지 확인 필수! main에서는 import가 제대로 됐는데 test 코드에서는 QEntity를 인식을 못해서 여러 방법을 시도해보다가 Setting -> Gradle 에서 이렇게 설정을 해주니까 동작이 됨,, spring boot 3.xx 버전부터는 build.gradl..
1. 애플리케이션 구현 준비 계층형 구조 사용controller, web : 웹 계층service : 비즈니스 로직, 트랜잭션 처리repository : JPA 를 직접 사용하는 계층, 엔티티 매니저 사용domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조jpabook.jpashopdomainexceptionrepositoryserviceweb개발 순서 : service, repository 계층 개발하고, 테이스 케이스 작성해서 검증, 마지막에 웹 계층 적용 2. 회원 도메인 개발구현 기능회원 등록회원 목록 조회순서회원 리포지토리 개발회원 서비스 개발회원 기능 테스트 회원 리포지토리 개발[회원 리포지토리 코드]@Repository //스프링 빈으로 등록(Component scan..
1. 요구 사항 분석회원 기능등록, 조회상품 기능등록, 수정, 조회주문 기능주문, 조회, 취소기타 요구사항상품은 재고 관리가 필요하다.상품의 종류는 도서, 음반, 영화가 있다.상품을 카테고리로 구분할 수 있다.상품 주문시 배송 정보를 입력할 수 있다.도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있고 한 번 주문할 때 여러 상품을 선택할 수 있어서 주문과 상품은 다대다 관계이다. 하지만 다대다 관계는 거의 사용하지 않기 때문에 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일로 풀어냈다.상품 분류 : 상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성을 사용하므로 상속 구조로 표현했다.회원 엔티티 분석 회원 (Member) : 이름, 임베디드..
1. 엔티티 매니저 팩토리, 엔티티 매니저 새로운 고객의 요청이 올 때마다 엔티티 매니저 팩토리는 엔티티 매니저를 생성하고 엔티티 매니저는 내부적으로 데이터베이스 커넥션을 사용해서 DB를 사용한다. EntityManagerFactory 생성하는 비용이 크기 때문에 한 개만 만들어 애플리케이션 전체에서 공유한다. 여러 스레드가 동시에 접근해도 안전하다. EntityManager 엔티티의 CRUD 등 엔티티와 관련된 모든 일을 처리한다. 여러 스레드가 동시에 접근을 하게 되면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다. 2. 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. EntityManager.persist(member); member 엔티티를 데이터 베이스..