0. 시작하며 이전 프로젝트에 검색 로직을 JPQL로 개발했었습니다. 이를 JPQL로 구현하니 코드가 매우 복잡하고 길어졌고 실무에서 많이 사용한다는 Querydsl을 사용하여 리팩토링하여 기록하려 합니다. 1. JPQL이란? Java Persistence Query Language 로서 이를 기반으로 JPA의 하이버네이트가 SQL문으로 변환하여 사용하게됩니다. 기본 JPA 메서드 보다 섬세한 쿼리를 사용할때 사용하게됩니다. 문자열로 작성됩니다. 특징 (장점) 별칭 엔티티의 별칭을 필수적으로 명시해야합니다.(as 생략 가능) 대소문자 구분 엔티티와 그 속성은 대소문자를 구분하여 작성해야합니다. 하지만 SELECT, FROM, WHERE등의 JPQL문법은 구분하지 않습니다. 엔티티 이름 JPQL에서 사용되..
0. 시작하며 https://nooroongzi.tistory.com/1 클러스터링 Index와 논 - 클러스터링 Index 인덱스란? 인덱스 : 색인 ( ex. 영어 사전의 a,b,c... ) 어떤 테이블의 Column을 Index로 선정한 경우 해당 Column기준 조회기능의 성능을 향상시킬 수 있습니다. Where절 등을 통해 활용됩니다. 특징 항상 nooroongzi.tistory.com 저번 포스팅을 보셨다면 Index를 사용해야 조회 성능이 좋아진다..! 는 장점은 알아보았으니 동작 원리에대해 알아보겠습니다. 또한 MySQL을 기준으로 PJT에 적용했던 복합 인덱싱까지 포스팅을 진행해 보겠습니다 1. B-tree B-tree는 Index의 자료구조 중 하나이고, MySQL은 Index를 내부적..
0. 시작하며 백엔드 개발의 성능 최적화 및 확장성을 기본적인 지식을 기록하기위해 글을 씁니다! 단일 ~ 멀티 프로세싱까지 간단하게 다루어보겠습니다! 각 단어의 정의는 다음과 같습니다. 프로그램 : 컴퓨터가 실행할 수 있는 명령어의 집합 프로세스 : 컴퓨터에서 실행중인 프로그램 CPU : 명령어를 실행하는 연산 장치 메인 메모리 : CPU에서 실행되는 프로세스의 대기장소 I/O(input/output) : 파일을 읽고 쓰거나 네트워크의 무언가와 데이터를 주고 받는 것 1. 단일 프로세스 시스템 단일 프로세스 시스템이란? CPU에서 "한번에 하나의 프로그램"만 사용되는 시스템 형태를 말합니다. 아무래도 CPU에서 하나의 프로세스만 처리한다면 CPU 연산이 끝난뒤 I/O 작업이 발생한다면 CPU는 대기해야하..
0. 사용 이유 프로젝트에 얼굴인식을 수행해 대상의 신원, 나이, 성별을 인식하는 기능을 sk open api를 사용하여 구현이 완료된 상태입니다. 하지만 api 호출을 최소화 하기위해 이미지의 유효성검사를 자체적으로 실행하여 개선 목적으로 ProcessBuilder로 유효성 검사 실행을 도전했습니다. 성능 비교를위해 다음과 같이 임시 test를 진행해보겠습니다. 1. ProcessBuilder란? Process 클래스의 보조 클래스로 start 메서드를 호출하면서ProcessBuilder 클래스의 인스턴스에 정의 된 속성으로 새 프로세스를 만들 수 있습니다. ProcessBuilder는 동기화 된 클래스가 아니며, 명시적으로 동기화되지 않으면 멀티 스레드로부터 안전하지 않습니다. cmd로 명령을 수행하..
JPA 이름 규칙 Repository에서 이름규칙을 이용해 쿼리를 이용할 수 있습니다. 개발 편의성이 좋지만 잘 알고 사용하기위해 정리해 두려고합니다. 이는 공식문서에 잘 나와 있습니다. https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html find...By 가장 많이 사용하는 단건 조회 키워드입니다. 복수는 Collection, Page 조회 가능 exists...By 조회 유무를 boolean타입으로 반환합니다. counts...By 검색 결과 총 record 수를 반환합니다. ...First... 결과값 수를 제한합니다. (First, Top) //조회할 record가 1개인 경우 별도의 인자 설정 ..
더보기 문제 상황 .yml 파일의 환경 변수 주입과 bean 과 환경 변수 주입 순서에대해 무지해 겪은 에러를 공유하고자 글을씁니다. 이번 프로젝트는 다음과 같은 환경에서 진행중입니다. Java 11(JDK) Spring Boot Maven 위 환경에서 sms알림기능을 위해 API KEY와 저의 핸드폰 번호 등을 환경변수로 관리해야하는 상황이었습니다. 직접 구현하는건 처음이지만 익숙한 기능이기에 빠르게 할 수 있을 줄 알았습니다.. 그러나 다음과 같은 두가지 문제가 발생했습니다. API_KEY, API_SECRET 환경 변수가 Null이다. (1번 해결후)제 휴대폰 번호가 아닌 다른 번호로 주입된다. Bean 생성시기와 환경 변수 주입 시기 bean이란? 기존 Java 에선 클래스를 생성하고 new를 입..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.