티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함