엘리스트랙후기 63

프로젝트 QueryDSL 적용기

사이드 프로젝트에 필터 및 검색기능을 추가해달라는 요청이 있었다. 기존 페이지네이션으로 결과 값을 주고 있던 API에 QueryDSL로 검색 필터를 적용하였다. 요청 사항: DB에 대한 검색 기능 키워드를 통해 제목, 내용에 포함된 DB 검색 positionCode로 일치하는 DB 검색 parentCode(positionCode의 부모) 로 검색 상태 값을 통한 검색 응답값 형식: id": 41, "name": "포지션 테스트용", "recruitStartDate": "2024-02-03", "recruitEndDate": "2024-02-03", "content": "테스트 용", "deposit": 200000, "count": 5, "positionCodeList":[ { "positionCode"..

Spring 2024.02.08

Spring Profile

Spring Profile 이란 서버의 Application을 구동할 때 환경에 맞는 설정 값을 지정해야 하는 상황이 있다. 예를 들어 개발 / 테스트 / 운영 환경이 각각 다른 설정값을 가지고 있다고 했을 때 application.properties 혹은 application.yml 값을 계속 바꿔준다면 매우 번거로울 것이다. 이때 Profile 을 사용해서 환경에 맞는 설정값을 활성화할 수 있다. application.properties 적용 법 application-환경 설정명.properties 형식으로 특정 환경에 대한 설정값을 만든다. application.properties 에서 사용할 프로필에 대한 정보를 spring.profiles.active = 설정명 으로 지정하여 사용할 프로필을 활..

Spring 2024.02.03

MVC 모델 타임리프 폼 (체크 박스 / 셀렉 박스 / 라디오박스)

MVC 모델에서 특정 값을 받을 때 타임리프와 form 태그를 활용 하여 값을 받아올 수 있다. 아래 Entity의 예시에서 Boolean값과 enum타입, 특정 String 값을 유저가 직접 입력하는 것이 아닌 체크 박스 / 셀렉 박스 / 라디오박스 를 활용하여 받아오는 예시이다. Item Entity @Getter @Setter public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; private Boolean open; private List regions; private ItemType itemType; private String deliveryCode; ..

Spring 2024.02.02

영속성 컨텍스트

엔티티 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 영속성 컨텍스트는 엔티티를 관리하는 환경으로 Key와 그에 해당하는 객체로 엔티티를 관리한다. 영속성 컨텍스트를 동해 얻는 이점 1차 캐시에 저장하여 관리함으로 실제 DB에 커넥팅 하지 않고 DB의 값을 조회하는 등 성능상 이점 캐시를 통해 관리함으로 트렌젝션 내 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 변경 감지(Dirty Checking)를 통한 저장 지연 로딩(Lazy L..

JPA 2024.01.28

윈도우함수 와 집계함수

윈도우 함수 순위, 집계 등 행과 행 사이의 관계를 정의하는 함수로 OVER 구문을 필수로 한다. 종류 순위 함수: RANK() / DENSE_RANK() / ROW_NUMBER() 집계 함수 : SUM() / MAX() / MIN() / AVG() / COUNT() 행 순서 함수 : FIRST_VALUE() / LAST_VALUE() / LAG() / LEAD() 비율 함수 : CUME_DIST() / PERCENT_RANK() / NTILE() / RATIO_TO_REPORT() 문법 SELECT WINDOW_FUNCTION(ARGUMENTS) OVER( [PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절] ) FROM 테이블명; 1. 순위함수 RANK() : 같은 값이 있..

데이터 베이스 2024.01.27

서브쿼리 와 View

서브쿼리 분류 단일 행 서브쿼리 쿼리의 결과물이 하나의 행만 반환할 때 SELECT request_dtl_id, request_id , request_name , request_content FROM REQUEST_DTL WHERE request_id = (SELECT request_id FROM REQUEST WHERE request_status = 'FAILED'); 다중 행 서브쿼리 쿼리의 결과물이 여러 행을 반환할 때 SELECT request_dtl_id ,request_id,request_name,request_content FROM REQUEST_DTL WHERE request_id IN (SELECT request_id FROM REQUEST WHERE request_status ='FAI..

데이터 베이스 2024.01.26

계층형 질의

UNION 2개의 SELECT 된 결과를 병합한다. Default는 중복을 제거하고 정렬한다. UNION ALL 2개의 SELECT 된 결과물을 병합한다. 중복을 제거하지 않고 정렬하지 않는다. 계층형 데이터 테이블을 구성할 때 특정 상황에서 내부적으로 부모 자식 관계를 갖는 형식으로 구성할 경우가 있다. 무한 댓글 구조 , status 코드화 등등 해당 구조에서는 테이블의 pk 값을 부모 id를 컬럼 값으로 갖도록 하여 계층형 테이블 구조로 구성된다. 이에 대한 구조와 조회는 아래와 같다. - Member 테이블 구조 id parents_id 1000 NULL 1001 1000 1002 1001 1003 1002 1004 1002 1005 1000 1006 1005 1007 1006 - 계층형 조회 W..

데이터 베이스 2024.01.26

Symbol

Symbol 심볼은 Symbol 함수를 호출 해 생성할 수 있다. 생성되는 심볼은 변경 불가능한 원시 타입이다. Symbol은 유일한 식별자로써 안에 가지고 있는 값이 같은 두 객체를 === 비교 하여도 같지 않다는 결과를 얻을 수 있다. const a = Symbol(); const b = Symbol(); a===b; //-> false a==b; //-> false const id = Symbol('id'); const id2 = Symbol('id'); id === id2// false const id = Symbol('id'); const user = { name : 'Mike', age : 30, [id] : 'myid' } Object.keys(user); // ["name","age"] S..

JavaScript 2024.01.21

Spring MVC 구조 뜯어보기(2) - Spring MVC 사용

Spring 프레임 워크의 MVC 기능을 활용한 컨트롤러 모습을 알아보자. ModelAndView를 반환하는 방식 package hello.servlet.web.springmvc.v2; import hello.servlet.domain.member.Member; import hello.servlet.domain.member.MemberRepository; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpSe..

Spring 2024.01.21