2022년 9월 21일 수요일
@ 아침 독서, 저녁 수업영상/문제풀이, 주말 정리/온라인강의
현재로써는 이렇게 공부를 나눠서 진행하는 것이
가장 효율적인 방법으로 보인다, 결국에는 꾸준하게
이어갈 수 있는 노력을 찾는 것 또한 중요할 것이기에
나의 일상 패턴에 자연스럽게 물들 수 있도록 이어가자.
[수업 순서]
[프로젝션(projection)]
- SELECT절에 조회할 대상을 지정하는 것을
프로젝션이라고 한다.
[프로젝션 방식 종류]
1. 엔티티 프로젝션
- 원하는 객체를 바로 조회할 수 있으며
조회된 엔티티는 영속성 컨텍스트가 관리한다.
- 임베디드 프로젝션
- 엔티티와 거의 비슷하게 사용하지만
영속성 컨텍스트에서 관리되지 않는다.
- 스칼라 타입 프로젝션
- 숫자, 문자, 날짜 같은 기본 데이터 타입으로
영속성 컨텍스트에서 관리되지 않는다.
- new 명령어 활용 프로젝션
- DTO로 바로 조회하는 방식으로 new 패키지명.DTO명을 쓰면
바로 반환 받을 수 있다. 단, 엔티티가 아니므로
영속성 컨텍스트에서 관리되지 않는다.
[임베디드 타입(복합 값 타입 또는 내장 타입)]
- 새로운 값 타입을 직접 정의한 것으로 주로 기본 값 타입을
모아서 만든 하나의 타입을 말한다. 엔티티의 필드 중
일부분을 하나의 임베디드 타입으로 정의하면 알아보기 쉽고, 재사용성이 높게 디자인 할 수 있어 유지보수에 용이하다.
- @Embeddable : 값 타입을 정의하기 위한 어노테이션
- @Embedded : 값 타입을 사용하는 곳에 적용하는 어노테이션
[JPQL 그룹함수]
- JPQL의 그룹 함수는 COUNT, MAX, MIN, SUM, AVG이며
SQL의 그룹 함수와 별반 차이가 없다.
단, 주의해야 하는 사항이 있다.
- 그룹함수의 반환 타입은 결과 값이 정수이면 Long,
실수이면 Double 타입으로 반환된다.
- 값이 없는 상태에서 COUNT를 제외한 다른 그룹함수의 경우 NULL이 되며 COUNT만 0이 된다.
반환 값을 담기 위해 선언하는 변수 타입을 기본자료형으로 하면 조회 결과를 언박싱할 때 NPE이 발생한다.
- 그룹함수의 반환 자료형은 Long or Double이기 때문에 Having절에서 그룹 함수 결과 값과 비교하기 위한
파라미터 타입은 Long or Double로 해야 한다.
[JOIN]
- 일반 조인 : 일반적인 SQL 조인을 의미
1-1. 내부 조인(inner join)
1-2. 외부 조인(outer join)
1-3. 컬렉션 조인(one to many join)
1-4. 세타 조인(cross join)
- 폐치 조인 : SQL 조인 종류가 아닌 jpql에서
성능 최적화를 위해 제공하는 기능
※ 현재 세미프로젝트는 기본적인 기획을 마무리하고
디비 모델링 중이다, 개발을 열흘 뒤부터 들어가기에
그 전까지 스프링부트 진도를 나간다고 한다,
시간이 엄청 빠르게 흘러가는데,
알차게 보내는 느낌은 있어서 뿌듯하기도 하다,
앞으로도 화이팅!