본문 바로가기
관리자

Programming-[Backend]

(421)
[TIL] GroupBy에서는 제외하여 그루핑하되, 다른 기능에 활용하는 것은 불가 상황 재고를 표시해주는 리스트에서 id, code는 같은데 유통기한이 다른 항목이 있다면 유통기한은 무시하고 groupBy를 하는 요청을 받았다. 이때 재고 id 2, 3에 대해서 groupBy를 하고 Case When 절을 사용하여 유통기한이 여러 개일때는 null로 표시하면 문제가 발생하지 않는다. 그런데, 만약 리스트에 있는 정보를 바탕으로 다른 기능에 활용해야한다면 이때는 문제가 생긴다. 왜냐하면 재고의 유통기한이 명확히 정해져있는데, null로 표시하여 클라이언트에서 유통기한에 대한 정보를 받을 수 없다면 각 재고들의 정보를 정확하게 활용하는 것이 불가능하기 때문이다. 예를 들어 리스트 No 1의 항목에 대해 총 재고 수량을 구할려고 재고 테이블에 접근하면, 유통기한이 null인 요청을 할 수밖..
[TIL] groupBy 제거 필요 시 집계함수 활용, XOR 조건문 사용하기 1. groupBy 제거 필요 시 집계함수 활용 상황 querydsl에서 CaseBuilder를 사용하여 select 절을 구현하는 부분에서, groupBy를 하고 싶지 않은데 then절에 포함되어 groupBy를 지정해주어야만 했다. new CaseBuilder().when(ordersEntity.id.countDistinct().eq(1L)) .then(ordersEntity.id) .otherwise(0L).as("orderId") //중략... .groupBy( ... ordersEntity.id ) ordersEntity의 개수가 1개일때만 then절의 ordersEntity.id를 뽑아오는데, 그럼 select절에 ordersEntity.id가 있는 셈이므로 groupBy에 작성해주어야만 한다..
Redis 개념, Local Memory 대신 사용 이유, 설치(CLI, GUI) 1. Redis란? Redis는 리눅스 기반의 key-value 기반 메모리 서버이다. 비관계형 데이터베이스(NoSQL)기반으로 구성된다. 주로 잦은 접근이 필요한 데이터를 메모리에 저장하여 통신 속도를 높이는데 사용한다. 예컨대 웹 서비스에서 모든 사용자의 요청에 대해 사용자의 접근 권한을 확인한다. 이때 매번 데이터베이스에 연결하여 권한 정보를 가져오는 것은 비용이 매우 크고 느린 작업이므로 Redis에 접근하면 미리 Redis에 저장해둔 정보를 통해 빠르게 정보를 확인하고 응답할 수 있다. source : 유튜브 영상 - Redis Labs and SQL Server 또한 주요 특징으로 Single thread로 작동한다는 특징이 있다. 따라서 어떤 요청이 redis에서 수행되고 있다면 다른 요청은..
[TIL]PageableDefault는 non-deterministic sort를 한다 SpringData에서 사용하는 @PageableDefault는 non-deterministic sort를 발생시킨다. 따라서 사용을 자제하는 것이 좋은 것 같다. 경우에 따라서는 편하거나, 다른 방법이 있을수도 있지만... 용법 public PageRm getXxxList( @PageableDefault(size = 25) final Pageable pageable, @Valid XxxPo xxxPo) { return something...; } 현상 및 원인 @PageableDefault를 적용하면 1개 항목에 대해서만 sort를 하도록 되어있기 때문이다. (아래 사진 및 참조 1) 따라서 10개의 컬럼이 있는 리스트인데, 예를 들어서 name.asc로 정렬을 했다면 name으로 정렬하고 나머지 다른..
[TIL] 생성자 내부 멤버 메서드 실행(생성자 안에서 메서드 실행) 1. 배경 생성자 내부에서 메서드를 실행할려고 했다. 아래와 같은 코드이다. public MessageQueueAccessor(String name) { super(); this.name = name; } public MessageQueueAccessor(String name, String url) { super(); this.name = name; this.url = url; this.sendMessage(); //중략 private void sendMessage() { //로직 } } 즉 name, url을 인자로 받는 특정 생성자를 통해 인스턴스를 생성하는 경우 필드값을 초기화할 뿐 아니라, 멤버 메서드인 sendMessage 로직도 실행하고자 했다. 그런데 역할상 생성자가 초기화에만 관여해야지, ..
[Oracle] Oracle Xe 다운로드 및 설치, 기본 계정 설정, sql plus, IntelliJ 연결하기(IO Error : The Network Adaptor ...) 1. Oracle 데이터베이스 Oracle은 여러 종류의 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나이다. 구매 및 유지 보수 비용이 크지만 그만큼 확실한 안정성과 유지보수를 보장받을 수 있기 때문에 대기업이나 공공기관에서 많이 사용한다. 데이터베이스 관리 시스템(DBMS)들은 SQL 표준을 준수하기 때문에 어떤 DBMS 사용하더라도 큰 문제는 없으나, DBMS 별로 기능이나 문법이 조금씩 달라서 가장 널리 쓰이는 Oracle DBMS를 사용하는 것이 처음 학습에 좋다. Oracle XE 버전 개요 Oracle XE(Oracle Express Edition) 버전은 공개 소프트웨어로 4GB의 메모리와 4GB의 데이터 파일까지 무료로 사용할 수 있다. 2. 다운로드 및 설치 아래 링크에 들어가서 ..
[링크][탐험][작성중] WebMvcConfigurer, WebMvcConfigurationSupport, @EnableWebMvc 전체적 개념 https://goodgid.github.io/Spring-WebMvcConfigurer/ WebMvcConfigurationSupport, WebMvcConfigurer 차이 https://wedul.site/349
[링크] isAssignableFrom 과 instanceof의 차이 1. 문법 차이 s instanceof String s.getClass().isAssignableFrom(String.class) 2. 확인 시점 차이 instanceof 은 컴파일 시점에 타입 체크 isAssignableFrom은 런타임 시점에 불특정한 클래스에 대한 타입 체크 다시 말해 instanceof 쓰면 쓰는 순간 IDE에서 바로 잡아냄, isAssignableFrom은 프로그램 실행하고 실제 해당 구문이 실행될 때 클래스 타입을 확인함 3. null Safe 차이 null instanceof {어떤 클래스} 는 false 반환 {어떤 클래스}.class.isAssignableFrom(null)은 NullPointerException 반환 참조 https://blog.naver.com/Post..