DB 3

컬럼의 값이 null경우 치환 하는방법

오늘은 내가 잊어버리지 않도록 간단하게 sql에서 컬럼의 값이 null인 경우 값을 치환하는 방법을 정리하려고 한다. 만약 7월한달의 매출총액을 구하는 쿼리를 작성하려면 다음과 같이 작성하게 될 것이다. select sum(amount) from sales where salesDate between '2020-07-01' and '2020-07-31' group by salesDate; 그런데 여기서 문제가 발생한다, 문제 상황은 7월 10일에 sales라는 테이블에 부가세(tax)라는 컬럼이 추가 되게 되었고 그 컬럼의 기본값은 0이 아닌 null로 설정이 되있다. 그리고 이제부터는 부가세가 포함된 금액을 쿼리로 작성해야 한다면 다음과 같이 작성하게 된다. select sum(amount + tax) ..

SQL 2020.07.24

JPA annotation @DynamicUpdate?

오늘은 테이블에 대한 Entity를 만들 떄 항상 선언해 주었던 @DynamicUpdate에 대해서 정리해본다. 기본적으로 @DynamicUpdate는 Spring JPA에서 제공하는 기능이다. (JPA, Hibernate, Spring JPA가 같은 의미는 아님) 개발을 하면서 @DynamicUpdate 어노테이션이 무슨역할을 하는지도 모른채 대부분의 Entity에 선언해줬었는데, 최근들어 왜 선언해야하는지 궁금증이 생겨서 조금 조사해봤다, 간단하게 정리하면 다음과 같다. JPA는 서버가 실행될 때 CURD에 관한 SQL문을 캐싱해놓는데, 여기서 UPDATE문에 UPDATE 대상이 모든 열로 선언되어 있다는 거다, 컬럼(필드)가 20개라면 20개 컬럼에 대한 업데이트문이 선언되어 있는 것이다. (upd..

SPRING FRAMEWORK 2020.05.07

JPA의 엔티티에서의 카운팅(@Formula)

JPA를 이용해 개발하다보면 모호한 부분이 많은 것 같은데 대표적인게 JPA, Hibernate, Spring JPA인 것 같다. 여기서 정리 할 내용은 아니지만 간단히 설명하면 JPA는 기술명세, Hibernate는 인터페이스, Spring JPA는 Hibernate를 스프링 프레임워크에서 쉽게 사용할 수 있게 모듈화? 해놓은 것이라는데 이게 무슨소린지 아직도 좀 어렵다. 이 이야기를 하는 이유는 오늘 설명한 @Formula는 Hibernate의 기능이기 때문이다. 현재 내가 개발하면서 @Formula를 사용하는 경우는 조건절로 사용하거나, 집계된 데이터가 필요할 때 사용하고 있는데, 이외의 경우에도 사용할 수 있는지는 파악해보고 있다. 먼저 @Formula에 대해서 간단한 설명을 하자면, 데이터베이스..

SPRING FRAMEWORK 2020.05.03