Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Panel
titleJPA
@Entity
public class Address {
@Id
@GeneratedValue
@Column(name = "ADDRESS_ID")
private Integer id;

private String name;
private String address;

public String getDistrict() {
String result="NA";
switch(address) {
case "서울": result = "경기";
break;
case "창원": result = "경남";
break;
}
return result;
}
//Setter,Getter 생략
}

CASE는 SQL문 내에서 다양한 위치에 , 단순 CASE/검색 CASE등 다양한 위치에 사용이 되지만

이와 같은 단순 교환식은 JPA의Entity의 Get 퍼로퍼티에서 , 퍼로퍼티 정의를 통해 기존 데이터 변환이 가능합니다.

  

 이렇게 사용했을 때 장점은 다음과 같습니다.

  • district를 얻기위해 , 데이터베이스에게 일을 시키지 않습니다. 어플리케이션이 분산해서 연산할수 있음을 의미합니다.
  • 조회가 100개가되었다고 해서, getDistrict() 를 호출하지 않으면(사용하는곳이없으면), 어플리케이션내에서 변환 연산조차 발생하지 않습니다. 
  • 다양한 자바 함수사용이 가능합니다.

위와같은 장점이 있다고해서, 모든 경우에 SQL CASE문이 교환및 대체될수 있다란 의미는 아닙니다.

이것은 단지 데이터베이스가 가진 데이터모델과, 어플리케이션 로직을 자연스럽게 운영가능하다란 의미입니다데이터베이스의 Entity모델내에, 자연스럽게 특수한 값처리를 하는 로직을 이질성없이 결합할수 있다란것입니다.


집한연산

UNION

단일 테이블내의 WHERE 구에서 합집합을 OR,교집합을 AND가 담당하였습니다.

...