반응형
반응형
Introduction 예전에 QueryDSL 를 통해 데이터를 조회할 때 바로 DTO 객체로 응답 받는 방법을 포스트(https://mokggang.tistory.com/68) 했었는데. 자식 객체 기준에서의 부모 객체를 조회하는(Object in Object) 것 말고, 부모 객체 기준으로 자식객체를 조회하는(ObjectList in Object) 데이터가 필요한 경우 '일대다 관계의 부모와 자식 엔티티를 Join 으로 모두 조회 할 경우에도 DTO 객체로 응답 받아서 사용할 순 없을까 ?' jpaQueryFactory. select( team.id, team.name )). from(team). join(team.memberList, member) fetch(); 위와 같이 TeamDTO 객체 ..
Introduction 서비스 로직에서 특정 데이터를 업데이트, 즉 변경 하기 위해서 JPA 를 사용할 경우 일반적으로 DirtyChecking 을 통해 업데이트를 진행한다. 하지만 다수의 데이터를 일괄적으로 변경을 해야하는 경우에는 다수의 조회 및 업데이트 쿼리가 발생하기 때문에 성능적으로 좋지 않다. 그런 경우 JPQL 을 통해 업데이트 쿼리를 직접 작성하여 Bulk 업데이트를 진행하기도 하는데. Querydsl를 통해 문자열로 이루어진 JPQL 업데이트 쿼리의 Set 파라미터를 동적으로 업데이트를 진행할 수 있다. Bulk update 1.JPQL JPQL을 통한 기본적은 Bulk Update는 단순한 문자열 형태로 진행된다. 아래 코드는 Repository에서 나이와 유저아이디로 해당 유저들의 ..
Introduction 특정 웹사이트를 보면 검색조건들이 존재한다. 회원검색을 예를 들자면, 회원 목록을 조회할 경우 여러가지 검색 옵션들을 지정해 리스트를 보여준다. 1. 이름 검색 2. 이름 + 나이 검색 3. 이름 + 나이 + 성별 검색 이렇게 여러가지 조건에 따라 그에 부합하는 회원 목록을 보여주기 위해서 해당 회원 조회 쿼리에 조건들을 추가한다. 단순히 Spring Data Jpa 만 사용할 경우에는 인터페이스를 통해 조건에 맞는 함수를 추가적으로 만들어 주어야한다. 하지만 검색조건들이 다양한 만큼 조건에 해당하는 함수를 모두 만드는 일은 쉽지 않다. 이를 QueryDsl 에서 동적으로 검색조건을 동작할 수 있게 지원한다. 조건 검색 1. Spring Data Jpa 인터페이스를 활용한 조..
Introduction 백엔드에서 일반적으로 서비스 로직을 구성할 때 매개변수와 전달인자로 DTO를 사용한다. 여러가지 이유가 있겠지만, 필자가 생각하는 기본적인 이유는 1. 데이터의 종류와 타입 등 클라이언트의 요구사항이 다르다. - 서비스에서 클라이언트의 요구사항에 맞는 데이터를 가공 및 추가하는 과정이 필요하고, 불필요한 데이터를 응답할 필요가 없다. 2. Entity 객체의 필드 값을 예상하기 힘들다. - Entity 객체는 특정조건에 따른 결과물일 수도 있기 때문에 특정 데이터에 관해 직관적이지 못하고, 코드 추적이 불가피하다. 3. Entity 객체의 데이터의 무결성 - 서비스 로직에서 전달인자와 매개변수로 Entity 객체를 사용하게 되면, 의도치 않게 Entity의 값이 변경될 경우 JPA..
Introduction 매주 금요일 09시에 회사 팀 내에서 기술 세미나라는 것을 진행한다. 사용 해보지 못한 기술을 공유하거나, 컴퓨터 CS 등을 공유하는 시간을 갖는다. 이번에 내 차례이기도 했고, 대부분을 Spring + RDBMS 로만 개발 해왔는데 좋은 기회다 싶어서 Express(Node.js) + MongoDB(NoSQL)로 간단한 RestAPI를 만들어보고자 한다. ㅁ Node.Js 란 ? 구글 V8 엔진을 활용한 단일 스레드 + 이벤트루프 기반 고성능 네트워크 서버다. 언어로는 자바스크립트를 사용한다. ㅁ NoSQL 란 ? Not Only SQL 의 약자로 SQL만을 사용하지 않는 다른 DBMS를 가르키는 용어이다. 관계형 데이터베이스를 사용하지 않는 것이 아닌 여러 유형의 데이터베이스를..