전체 글
-
[SpringBoot] ManyToOne으로 설정된 엔티티 조회Back-end/TIL 2022. 3. 17. 09:18
# ManyToOne으로 설정된 엔티티 조회 //예시 Entity @Entity class PharmacyMenu { ... @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "upper_menu_id") private PharmacyMenu upperPharmacyMenu; ... } //예시 Repository 코드 @Query("select pm.id as id, " + "pm.upperPharmacyMenu.id as upperMenuId " + "from PharmacyMenu pm " + "where pm.id = :menuId") Optional findByMenuId(@Param("menuId") Long menuId); 필요한 값은 uppe..
-
[SpringBoot] Repository에서 nativeQuery 사용시 / private final로 변수 선언하는 이유 / Page vs. SliceBack-end/TIL 2022. 3. 16. 09:39
# Repository에서 nativeQuery 사용시 //Bad @Query(...) Page findAll(Pageable pageable); //Good @Query(...) Page findAll(Pageable pageable); public interface DtoVo { Long getId(); } 첫 번째 방식: Object 배열의 인덱스로 접근해야 하므로, 오류 발생 가능성이 크다. 두 번째 방식 interface에 필요한 필드를 불러오는 getter 메서드만 선언해둔다. Spring Data JPA에서 @Query()에서 설정한 변수 값으로 DtoVo에 바로 매핑해준다. (nativeQuery외에 일반 JPQL에서도 동일하게 작동함) //예시 코드 @Query("select pm.id ..
-
[SpringBoot] JPA를 통해 엔티티 반환시 DtoVo 사용하기Back-end/TIL 2022. 3. 16. 09:28
📌 상황 Spring Data JPA를 통해 엔티티 조회시 기존에는 아래와 같이 코드를 작성하였다. //기존 코드 Page findByMenuKorNameContains(String menuKorName, Pageable pageable); Page findByMenuEngNameIgnoreCaseContains(String menuEngName, Pageable pageable); 위의 코드가 틀린 것은 아니지만, 몇가지 문제점이 존재한다. 1. 기존의 방식은 엔티티 자체가 반환되기 때문에 만약 조회시 특정 필드 값만 필요하다면, 불필요한 필드 값이 모두 반환되는 상황이다. 2. 불필요한 필드가 많거나 해당 필드의 타입이 text와 같이 사이즈가 크다면, 성능 이슈가 발생할 수 있다. 즉, 기존의 방식..
-
Java의 ==, equals 연산자를 통한 문자열 비교Programming/Java 2022. 2. 27. 10:39
Stack 영역 - 함수 호출 시 각각이 Call stack에 쌓이며 함수 내에서의 변수와 포인터 등이 저장되는 영역으로, 함수 종료 시 다같이 해제되며 사라진다. Heap 영역 - 할당되어 사용되는 것들이 메모리에 쌓이는 영역으로, 프로그래머가 할당/해제 관리한다. - C계열에서는 잘 관리하는 것이 필요하고, Java에서는 참조가 끊어진 할당 객체들이 쌓이면 Garbage Collector가 동작하여 수거하고 메모리 해제를 해준다. Constant Pool - Method Area(클래스 파일 정보 저장 위치)에 속하고, 상수 자료형을 저장해두고, 동일한 값의 중복을 막아 메모리 낭비를 방지한다. - 즉, 이미 있는 값이 들어오면 새로 만들지 않고 먼저 들어있던 같은 값의 주소를 같이 참조하게 한다. ..