Posts by Category

querydsl

querydsl SQL function

최대 1 분 소요

SQL function은 Dialect에 등록된 function만 호출할 수 있다.

querydsl & Spring Data JPA

2 분 소요

Spring Data JPA 사용하기 Repository interface를 생성하고 JpaRepository<Entity, ID>를 상속받는다. Spring data JPA는 이전의 포스트에서 손수 구현한 기능들을 기본적으로 제공한다. 순수...

querydsl 동적 쿼리

1 분 소요

동적 쿼리를 해결하는 방식은 두가지가 있다. BooleanBuilder Where 다중 파라미터 사용

querydsl Projection

2 분 소요

Projection select절에 어떤 데이터를 가져올지 대상을 지정하는 것. 대상이 하나인 경우 해당 타입으로 지정할 수 있다. 대상이 여러개인 경우 Tuple이나 DTO로 받아야 한다.

querydsl 상수

최대 1 분 소요

상수 사용 Expressions.constant() 사용

querydsl case문

최대 1 분 소요

Case 조건에 따른 값을 지정해주는 문법 select, where, order by 절에서 사용 가능

querydsl join

2 분 소요

기본 조인 Join의 기본 문법은 join(조인 대상, 조인에 사용할 Q타입의 별칭(alias)) 이다. List<Member> teamA = queryFactory .selectFrom(member) .join(member...

Spring Data JPA가 제공하는 Querydsl 기능

1 분 소요

Spring Data JPA는 Querydsl에 몇가지 간편한 기능을 제공한다. 이 기능들은 코드 몇줄을 통하여 편하게 사용할 수 있지만 하나의 테이블을 이용한 쿼리에서 사용해야 정상동작을 기대할 수 있다는 제약이 있다. 여러 테이블을 조인해야 하는 경우 기능이 정상 동작하지 않을...

querydsl 집합

최대 1 분 소요

집합 함수 JPQL이 지원하는 집합 함수를 제공 count() : 조회 데이터의 수 sum() : 조회 데이터 컬럼의 합 avg() : 조회 데이터 컬럼의 평균 max() : 조회 데이터 컬럼의 최대값 min() : 조회 데이터 컬럼의 최소값

querydsl 정렬

최대 1 분 소요

정렬 orderBy() : order by 쿼리를 발생시킨다. asc() : 오른차순 desc() : 내림차순 nullsLast() : 해당 필드 값이 null 이라면 조건의 마지막으로 가져온다. ...

querydsl paging

최대 1 분 소요

페이징 offset() 앞에 스킵할 row의 수 0부터 시작한다. ex) 1이라면 1개를 스킵한 것. limit() 최대로 가져올 row의 수 전체 조회수를 구하고 싶은 경우 ...

querydsl 결과 조회

최대 1 분 소요

결과 조회 fetch() : 리스트 조회, 결과값 없는 경우 빈 리스트를 리턴. fetchOne() : 단 건 조회 결과 없는 경우 : null 결과가 2개 이상인 경우 : NonUniqueResultException fet...

querydsl 검색 조건 쿼리

최대 1 분 소요

기본 검색 쿼리 검색 조건은 .and()와 .or()를 메서드 체인으로 연결할 수 있다. select(entity).from(entity)은 selectFrom()으로 합칠 수 있다. JPQL이 제공하는 모든 검색 조건을 제공한다. - querydsl 자체가 JPQL의...

querydsl Q-Type

1 분 소요

테스트할 Entity 앞으로 querydsl 게스글에 나올 Entity는 아래와 같다.

querydsl

1 분 소요

Back-end 개발을 할 경우 Spring boot, JPA, Spring data jpa를 대체로 많이 사용한다. 하지만 이 기술 조합으로 해결하지 못하는 한계가 발생하기 마련인데, 이는 복잡한 쿼리와 동적 쿼리 문제다. 실무에서는 특히 복잡한 쿼리를 많이 사용하고, 검색...

맨 위로 이동 ↑

spring-data-jpa

Spring Data Common - 기본 리포지토리 커스텀

최대 1 분 소요

쿼리 메소드(CREATE, USE_DECLARED_QUERY)로 해결할 수 없는 경우 직접 코딩으로써 구현 custom 리포지토리 인터페이스 정의 custom repsitory interface에 기능 추가 만약 spring data기 지원하는 기능의 성능이 마음에 들...

Spring Data Common - Custom Repository

1 분 소요

쿼리 메소드(CREATE, USE_DECLARED_QUERY)로 해결할 수 없는 경우 직접 코딩으로써 구현 custom 리포지토리 인터페이스 정의 custom 리포지토리 인터페이스에 새로운 기능 추가 만약 spring data기 지원하는 기능의 성능이 마음에 들지 않은...

Spring Data Common - 쿼리만들기

최대 1 분 소요

스프링 데이터 저장소의 쿼리 만드는 방법 메소드의 이름을 분석하여 쿼리를 생성(CREATE) 미리 정의해 둔 쿼리 찾아 사용(USE_DECLARED_QUERY) JPA의 구현체마다 구현이나 동작하는 방식이 다르지만 spring-data-jpa가 기본적...

Spring Data Common - Null 처리

최대 1 분 소요

spring data 2.0부터 java 8의 Optional을 지원한다. Optional<Entity> findById(Long id); 되도록이면 단일 값을 가져와야 하는 경우 Entity타입이 아닌 Optional<Entity> 값으로 가져오면 ...

Spring Data Common - Repository

최대 1 분 소요

JpaRepository JpaRepository는 PagingAndSortingRepository에서 JPA와 관련된 기능을 확장한 interface로, spring data jpa가 제공해준다. PagingAndSortingRepository부터 그 상위의 CrudRe...

Spring Data Common이란

최대 1 분 소요

spring data는 하나의 프로젝트가 아니고 여러 SQL & NOSQL 저장소 지원 프로젝트의 묶음이다. spring data JPA spring data JDBC spring data KeyValue spring data MongoDB spring ...

JPA7 - Query

최대 1 분 소요

JPA Query 대하여 공부한 내용을 기술합니다.

JPA6 - Fetch

최대 1 분 소요

JPA Fetch에 대하여 공부한 내용을 기술합니다.

JPA5 - Cascade

1 분 소요

JPA Cascade에 대하여 공부한 내용을 기술합니다.

관계형 DB와 Java

1 분 소요

관계형 DB와 Java에 대하여 공부한 내용을 기술합니다.

ORM

최대 1 분 소요

Object-Relation Mapping

맨 위로 이동 ↑

spring

Spring Bean Scope

3 분 소요

Spring Bean Scope에 대하여 공부한 내용을 기술합니다.

Dependency Lookup

2 분 소요

Dependency Lookup에 대하여 공부한 내용을 기술합니다.

@Builder

2 분 소요

이번 포스트는 업무 중 builder 어노테이션에 대하여 알게된 것이 있어 정리하고자 작성하겠습니다.

Hikari 옵션

최대 1 분 소요

Hikari 옵션에 대하여 정리.

Retention Policy

최대 1 분 소요

Retention Policy에 대하여 공부한 내용을 기술합니다.

DTO와 VO

최대 1 분 소요

DTO와 VO에 대하여 공부한 내용을 기술합니다.

@WebMvcTest

최대 1 분 소요

@WebMvcTest에 대하여 공부한 내용을 기술합니다.

Spring Boot Test

1 분 소요

Spring Boot Test에 대하여 공부한 내용을 기술합니다.

Dependency Injection

최대 1 분 소요

Dependency Injection에 대하여 공부한 내용을 기술합니다.

Maven과 Gradle

최대 1 분 소요

Maven과 Gradle에 대하여 공부한 내용을 기술합니다.

@DataJpaTest

최대 1 분 소요

@DataJpaTest에 대하여 공부한 내용을 기술합니다.

맨 위로 이동 ↑

java

JVM

3 분 소요

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

변수의 초기화

1 분 소요

변수의 초기화에 대하여 공부한 내용을 기술합니다.

Private Constructor

최대 1 분 소요

Private Constructor에 대하여 공부한 내용을 기술합니다.

맨 위로 이동 ↑

clean-code

Clean Code 6장 - 객체와 자료구조

2 분 소요

변수를 비공개로 하는 이유 변수를 private로 선언하는 이유는 남들이 변수에 의존하게 만들고 싶지 않기 때문이다. 즉, 변수의 타입이나 구현을 마음대로 바꾸게 하기 위함이다.

Clean Code 5장 - 형식 맞추기

2 분 소요

코딩을 함에 있어 네이밍은 상당히 중요하다. 이에 더해 코드의 형식을 맞추는 것도 상당히 중요한데, 형식을 잘 맞춘 코드는 그 퀄리티가 더욱 높아 보이게 만들어주며 그렇지 않은 코드는 무성의해 보이게 만든다. 팀 내의 컨벤션, 사내 컨벤션을 준수하는 것이 얼마나 중요한 것인지 이번...

Clean Code 4장 - 주석

2 분 소요

그동안 개발을 진행하며 내가 짠 코드가 다른 사람에게 더 쉽게 읽히기 바라는 마음으로 주석을 달곤 했다. 하지만 이 책을 읽으며 그것은 괜한 고민이며, 간결한 로직과 분명한 네이밍으로 보완할 수 있음을 알게되었다. 다음은 클린 코드 4장을 정리한 내용이다.

Clean Code 3장 - 함수

3 분 소요

작게 만들어라 저자의 경험으로 많게는 3000줄에서 적게는 20~30줄 정도의 함수를 만들었다고 하는데 작을수록 좋다고 확신한다고 한다. 필자 또한 함수가 길어지면 길어질수록 가독성이 떨어지고 기능적으로 한가지 기능이 아닌 여러 기능을 수행하고 있다고 생각하기에 이는 리팩...

Clean Code 2장 - 의미있는 이름

1 분 소요

의도를 분명하게 지어라 시간이 오래걸리더라도 좋은 이름을 짓는 것이 중요하다. 의미 없는 이름으로 변수, 함수, 클래스 이름을 짓는다면 아주 간단한 코드라도 코드를 읽는 사람을 힘들게 한다.

맨 위로 이동 ↑

jpa

Controller에서 JPA Entity를 반환하는 경우

2 분 소요

이번 포스트는 Controller에서 api 응답을 Entity로 하는 경우에 맞닥뜨린 이슈를 공유하며, 어떤 방법이 적절한가에 대한 생각을 정리하기 위해 작성하였습니다. 개인적 견해가 많이 포함되어 잘못되었을 수 있으니 다른 의견을 갖고 계시다면 댓글로 달아주시면 감사드리겠습니다.

JPA key 생성전략 변경 사항

1 분 소요

최근 JPA에 대하여 공부를 할 때 DB 벤더를 MySQL로 설정할 경우 기본 키 생성 전략이 IDENTITY, Postgresql은 SEQUENCE라고 학습하였다.

JPA N+1 문제

5 분 소요

이번 포스트에서는 JPA를 사용할 떄 문제가 될 수 있는 N+1 쿼리 문제에 대하여 정리해보겠습니다.

맨 위로 이동 ↑

Test

Junit5

최대 1 분 소요

Junit5에 대하여 공부한 내용을 기술합니다.

Junit5 Assertion

1 분 소요

Junit5 Assertion에 대하여 공부한 내용을 기술합니다.

맨 위로 이동 ↑

spring-based-rest-api

REST API

2 분 소요

REST API에 대하여

맨 위로 이동 ↑

http

맨 위로 이동 ↑

mysql

맨 위로 이동 ↑

javascript

맨 위로 이동 ↑

react

맨 위로 이동 ↑

design-pattern

맨 위로 이동 ↑

JPA

Open Session In View

5 분 소요

Open Session In View에 대하여 공부한 내용을 기술합니다.

맨 위로 이동 ↑