2023/9월
23-9-16 JPA / Optional , Comparator
parkrams
2023. 9. 16. 19:53
728x90
스프링 단축키 꿀팁
alt 두번 누르면 그 창 이
alt +1 프로젝트 창 키고 끄기
▶ 인덴트 : Tab(인덴트), Shift+Tab(인덴트 취소)
인덴트는 들여쓰기를 말한다. Tab키는 들여쓰기를 Shift+Tab은 들여쓰기 취소를 할 때 눌러주면 된다.
▶ 자동 인덴트 : Ctrl+Alt+I
코드 전체에 자동 인덴트를 적용하고 싶다면 Ctrl+A키를 눌러 코드 전체 영역을 선택해 주고 그 다음 Ctrl+Alt+I키를 눌러주면 된다.
▶ 사용처 찾기 : Alt+F7(찾기), Ctrl+B(빠른 찾기)
함수를 사용하고 있는 사용처를 찾을 때 Alt+F7(찾기)키 혹은 Ctrl+B(빠른 찾기)키를 눌러주면 된다.
Alt + insert -> 겟셋 같은 소스 검색
▶ 꿀 팁 : Ctrl + shift + enter ( 자동 닫기, 괄호 완성 기능? 애매 하다 싶을 때 눌러주면 자동 마무리)
▶ 세팅 창 : Ctrl + alt + s
▶ 변수명 한번에 바꾸기 : shift + f6
▶ 메소드 안에 들어갈 변수명 확인 : Ctrl + p
▶ 람다로 변환 : alt + enter -> Replace with lambda
▶ Refactor This : Shift + Ctrl + alt + T
▶ lnline Method : Ctrl + alt + N
▶ Test 클래스 생성 : Ctrl + Shift + T
▶ 값 일괄 변경 : Ctrl + Shift + R
함수 합치는 메서드?
오늘 한 것
공부
깃 데스크탑 체크체크
- 리버트는 커밋 하기 전 시점으로돌린다
- 고로 내가 최근에 작업하던걸로 돌리고 싶다면 history 에서 최근 걸 리버트 하면 된다
4개월 셀프로젝트
- Optional은 null이 있음을 안정적으로 처리하기 위해 사용한다
- findFirstByOrderByQueueValueDesc를 사용하면 나오는 쿼리
Hibernate:
select
department0_.department_no as departme1_11_,
department0_.create_date as create_d2_11_,
department0_.update_date as update_d3_11_,
department0_.create_no as create_n4_11_,
department0_.update_no as update_n5_11_,
department0_.department_depth as departme6_11_,
department0_.department_flag as departme7_11_,
department0_.department_name as departme8_11_,
department0_.department_parent_no as departm10_11_,
department0_.queue_value as queue_va9_11_
from
department department0_
order by
department0_.queue_value desc limit ?
이 로그는 Hibernate가 생성한 SQL 쿼리를 보여주고 있습니다. 이 쿼리는 department 테이블에서 모든 필드를 선택하고, 결과를 queue_value 필드의 값에 따라 내림차순으로 정렬한 후, 그 중 첫 번째 결과만 가져오는 것을 의미합니다.
자세히 분석해보면:
select department0_.department_no as departme1_11_, department0_.create_date as create_d2_11_, ...: 여기서 select 구문은 데이터베이스에서 가져올 필드(컬럼)들을 나열하고 있습니다. 각 필드 이름 옆에 있는 as ... 부분은 해당 필드에 대한 별칭(alias)을 정의하는 부분입니다.
from department department0_: 이 부분은 쿼리가 작용할 테이블을 지정합니다. 여기서는 department 테이블에 작용하며, 이 테이블에 대해 'department0_'라는 별칭을 사용합니다.
order by department0_.queue_value desc: 이 부분은 결과를 어떤 기준으로 정렬할지 지정합니다. 여기서는 'queue_value' 필드의 값에 따라 내림차순(descending order)으로 정렬하도록 지정하였습니다.
limit ?: 이 부분은 반환할 결과의 최대 개수를 제한하는 구문입니다. '?'는 placeholder로, 실제 쿼리 실행 시점에서 특정 값으로 치환됩니다.
따라서 전체적으로 보면, 이 SQL 쿼리는 "모든 Department 중에서 queueValue가 가장 큰 값을 가진 Department 객체 하나를 찾아 반환"하는 역할을 합니다.
- 조직도 위 아래로 움직이는 로직 추가
- 부서 수정 시 하위 부서로 수정 되면 queueValue null로 세팅
- 부서 추가 시 상위 부서면 queueValue의 가장 마지막 번호에 + 1 해서 세팅
- 부서가 가장 윗부서 일 때 로직 처리
- 부서가 가장 아랫부서 일 때 로직 처리
- 기존 사용 탑 쌓기 에서 위, 아래로 이동하면서 value 초기화 삭제
- Comparator
Comparator.comparing(Department::getQueueValue, Comparator.nullsLast(Comparator.naturalOrder()))
// Department::getQueueValue -> 메소드 참조
- Department 에서 queueValue를 가져오는 함수
// Comparator.nullsLast
- null
보충수업
운동
- _운동~ _
궁금한 것
내일 할 것
프로젝트
운동
해결하려고 노력 중
-- 더 공부할 것
-- 모르는 것
공부할 키워드
- 스프링 빈, 스프링 컨테이너, 의존성 주입
- JPA영속성 컨텍스트
- viewResolver
- url /uri-
- HTTP Pro- \tocol
- REST ful
- 다음 차시까지 공부해오실 내용은
- http 프로토콜 (중요 mozila docs 확인할 것)
- [demo 프로젝트] thymeleaf layout 구조 확인 및 공부
7월 넷째 주 키워드
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
부트스트랩 컴포넌트
fontAwesome - 태그
8월 첫째 주 키워드
http 프로토콜 (중요 mozila docs 확인할 것)
[demo 프로젝트] thymeleaf layout 구조 확인 및 공부
Builder 패턴
@Builder 클래스 레벨에서 사용할 때 @NoArgsConstructor
modelMapper api
자바 기본 자료구조
자바 제네릭
23-8-2
JAVA Optional 객체
th:each, th:data-id
23-8-4
메모리 영역(code, data, heap, stack)
JVM 가비지 컬렉션
23-8-24
.stream().map()
collect
Collectors.toList()
23-8-26
자바 람다
23-8-27
QueryDsl
728x90