일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스파르타내일배움캠프TIL
- BFS
- 스파르타내일배움캠프
- 스택
- 순열
- 문자열
- 포톤
- unityui
- Inventory
- QueryDSL
- 프로그래머스
- Unity2D
- 해시
- 유니티
- 언리얼엔진
- Unity3d
- 이분탐색
- Unity
- 유클리드호제법
- UnrealEngine
- 내일배움캠프
- c#
- Photon
- 구현
- FSM
- 알고리즘
- C++
- 워크플로
- UE4
- Firebase
- Today
- Total
목록Java (100)
개발 낙서장
오늘의 학습 키워드📚 QueryDSL 페이징 + 성능 개선 https://dachomi97.tistory.com/130 [Spring] QueryDSL 페이징 QueryDSL 페이징? 기존에 레포지토리에서 페이징 된 값을 받을 때처럼 Pageable 객체를 만들어 페이지 정보를 보내 QueryDSL로 작성된 쿼리문을 통해 받아오면 된다. List content = queryFactory.selectFrom(todo).wh dachomi97.tistory.com 불필요한 조회 쿼리 개선 Todo에 관한 쿼리를 수행할 때 User 조회 쿼리도 항상 같이 날아가는 이슈가 있었다. Hibernate: /* select todo from Todo todo where todo.user = ?1 */ select t..
QueryDSL 페이징? 기존에 레포지토리에서 페이징 된 값을 받을 때처럼 Pageable 객체를 만들어 페이지 정보를 보내 QueryDSL로 작성된 쿼리문을 통해 받아오면 된다. List content = queryFactory.selectFrom(todo).where(todo.user.eq(user)) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); Long count = queryFactory.select(todo.count()).from(todo) .where(todo.user.eq(user)).fetchOne(); return new PageImpl(content, pageable, count); 특정 User의 할 ..
오늘의 학습 키워드📚 페이징 반드시 익혀야 하는 기본적인 기술이다. 어떤 것을 조회할 때 몇 개가 나올 수도 있지만 1000개가 나올 수도 있다. 혹은 그 이상... 이 모든 정보를 다 조회해서 표시할 필요는 없다. 이 때 사용되는 것이 Paging이다. 페이징을 사용하면 사용자가 원하는 만큼 조회할 수 있기 때문에 사용성이 좋아지고 서버 입장에서도 불필요한 리소스를 로드하지 않으므로 성능적으로 장점이 많다. 페이징을 사용하기 위해서는 기본적으로 필요한 정보들이 있다. 조회할 페이지가 몇 페이지인가? 한 페이지에 몇 개를 표시할 건가? 오름차순인가 내림차순인가? 기준 키워드는 무엇인가? Spring에서 제공하는 Pageable 인터페이스를 사용해서 JPA Repository에 페이지 정보를 보내 페이징 ..
오늘의 학습 키워드📚 로그인 페이지 기존엔 API만 만들고 포스트맨으로 테스트했다면 이제 실제로 View를 만들어볼 차례다. 아무리 백엔드 개발자가 되기 위해 공부를 한다지만 다방면으로 기본적인 지식은 있어야 하니까.... 먼저 html, js, css를 구성한다. 그리고 기존 컨트롤러들은 RestController 였으니 View를 표시하기 위한 Controller를 만들어 준다. package com.sparta.mytodo.view.controller; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org..
오늘의 학습 키워드📚 QueryDSL QueryDSL은 기존 Spring Data JPA의 Query Method의 단점을 보완한 쿼리 방식이다. 기존 쿼리 메소드는 간단한 조회 등에는 직관적이고 사용하기 굉장히 편리했지만 조건이 복잡해질 수록 사용하기 까다로워진다. 또한 @Query를 통해 어느정도 커스텀 쿼리를 작성할 수 있다고 하지만 String 형식으로 작성하기에 개발자 입장에서 오타나 문법이 잘못된 부분을 파악하기 어렵다. QueryDSL은 QueryFactory를 통해 Java 메소드로 쿼리를 구현할 수 있어 컴파일 단계까지 가지 않아도 오탈자, 잘못된 문법 등을 쉽게 파악할 수 있고 가장 큰 장점은 동적인 쿼리 작성에 매우 유연하다는 것이다. 적용 방법 먼저 의존성을 추가해준다. 스프링 버전..
오늘의 학습 키워드📚 JPA 용어 엔티티 매니저(Entity Manager) : 엔티티 매니저는 영속성 컨텍스트를 관리한다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있다. 영속성 컨텍스트(Persistence Context) : 영속성 컨텍스트는 엔티티를 보관하고 관리한다. 엔티티에 대한 CRUD 작업이 가능하며 1차 캐싱, 쓰기 지연, 더티 체킹 등의 이점이 있다. 엔티티 매니저 팩토리(Entity Manager Factory) : 엔티티 매니저 팩토리는 엔티티 매니저를 만들어 제공하는 역할을 한다. 보통 애플리케이션에서 단 하나만 전역으로 존재하도록 한다. 엔티티(Entity) : 데이터의 집합을 의미한다. DB에서 어떤 테이블의 Row 하나를 Entity 하나에 꺼내와 작업한다. 영속성 ..
오늘의 학습 키워드📚 FK 제약 조건 Entity에서 ManyToOne, JoinColumn 어노테이션을 통해 참조 테이블을 설정하면 자동으로 해당 테이블의 PK가 FK로 등록이 되고 제약 조건까지 생긴다. FK의 제약 조건이 걸려있으면 장점들도 있다. 데이터 무결성, 참조 무결성을 크게 신경쓰지 않아도 컴파일러 단계에서 걸러내어 지킬 수 있고 데이터를 일관되게 저장할 수 있고 테이블 간 분석이 직관적일 수 있다. 하지만 많은 부분에서 단점으로 작용한다고 생각한다. 먼저 DB의 유연성이 매우 떨어지게 된다. 제약 조건이라는 것은 결국 뭔가 행동할 때 신경 써야 할 부분이 생긴다는 것이고 이는 확장성, 유연성이 중요한 개발에서 큰 단점으로 작용한다. 예를 들어 User를 참조하는 Comment 테이블이 있..
보통 필드 네이밍을 할 때 여러 단어가 합쳐진 필드 이름이라면 대문자 혹은 언더바로 구분하는게 대부분이다. '유저 이름'이라는 항목을 필드로 만드려면 'userName' 혹은 'user_name' 이런 식으로 필드를 만드는게 일반적이다. 근데 보면서 이상한 부분이 있었다. Spring에서 제공하는 UserDetail이라는 인터페이스에는 username으로 네이밍이 돼있다. public interface UserDetails extends Serializable { Collection