Spring Data: 76개의 글
Spring data JPA Querydsl 기능 중에 리포지토리 지원하는QuerydslRepositorySupport을 통해 좀 더 편리한 기능을 사용하고자 합니다. 방법 1. Repository를 방식처럼 JpaRepository을 상속 받는 인터페이스를 만듭니다. 예시 코드 // 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 (MemberRepositoryCustom) public interface MemberRepository extends JpaRepository, MemberRepositoryCustom { List findByUsername(String username); } 2. MemberRepository를 만든다 (여기서는 MemberRepositoryCustom) - 이 인..
QueryDsl이란? JPQL의 빌더(Criteria)클래스 QueryDsl 사용전 설정 dependency 추가 dependencies { compile("com.querydsl:querydsl-core:4.2.1") compile("com.querydsl:querydsl-apt:4.2.1") compile("com.querydsl:querydsl-jpa:4.2.1") compile("com.querydsl:querydsl-collections:4.2.1") ... } Q클래스를 먼저 생성 후 컴파일 되어야 하므로 task를 먼저 실행시켜야함 def queryDslOutput = file("src-gen/main/java") sourceSets { main { java { srcDir "src-gen/..
Spring Data 란? Spring Data’s mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of the underlying data store. It makes it easy to use data access technologies, relational and non-relational databases, map-reduce frameworks, and cloud-based data services. This is an umbrella project which contains many subprojec..
Springboot,Redis - Springboot Redis Nodes Cluster !(레디스 클러스터) 이전 포스팅에서는 Redis Server들의 고가용성을 위해 Redis Sentinel을 구성하여 Master-Slave 관계의 구성을 해보았습니다. ▶︎▶︎▶︎Redis - Sentinel 이란? 설정방법! Redis 고가용성을 위한 방법 Sentinel을 구성하여 Redis Server들의 고가용성을 키워주는 방법 이외에도 사실 Redis는 Cluster라는 좋은 기능을 지원해줍니다. 그럼 Sentinel은 무엇이고 Redis Cluster는 다른 것인가? 대답은 엄연히 다른 기능입니다. 간단히 비교하면 Sentinel는 Master-Slave관계를 구성합니다.(Redis Server 끼리 ..
Redis - Cluster & Sentinel 차이점 및 Redis에 대해 요즘 챗봇 개발 중에 Redis와 같은 In-memory Cache를 이용할 필요가 생겨서 Redis를 공부 하고있다. 많은 블로그를 보는 도중에 Redis에 대한 기술적인 좋은 글과 설명이 있어서 포스팅한다. ▶︎▶︎▶︎Redis - Sentinel 이란? 설정방법! Redis 고가용성을 위한 방법 RDBMS만큼의 정합성과 영속성을 보장할 필요가 없는 데이터들을 빠르게 처리하거나 일정 기간동안만 보관하고 있기 위한 용도로 레디스(Redis), memcached 등의 in-memory 기반 저장소가 많이 사용된다. 그중에서도 Redis는 빠른 성능을 유지하면서도 일정 수준 이상의 persistence를 제공하고, 다양한 nati..
Redis - Sentinel 이란? 설정방법! Redis 고가용성을 위한 방법 이전 포스팅에서 Redis Server Replication 구성방법에 대해 알아봤습니다. 이번 포스팅은 Redis 고가용성을 위한 Sentinel 기능에 대해 알아보려고 합니다. 어떻게 보면 조금더 완벽한 클러스터링을 구성한다고 생각하시면 됩니다. 만약 Redis 설치 및 설정 방법을 모르신다면 아래 링크를 통해 참조하시고 오셔도 좋을 것같습니다. ▶︎▶︎▶︎Redis - Redis 설치 및 설정, 간단한 사용방법 우선 Sentinel에 대한 기능에 대해 알아보겠습니다. 1) 모니터링 2) 알림기능 3) 페일오버 4) 환경 구성 프로바이더 이러한 기능을 제공해줍니다. 오늘 예제로 구성해볼 이미지입니다. 구성이 이해가 가십니..
Redis - Redis 설치 및 설정, 간단한 사용방법 Redis란? 정말 단순하게 표현하면 key-value 형태의 값을 저장할 수 있는 하나의 In-Memory DB라고 생각하시면 됩니다. 사용용도는 정말 많습니다. Springboot에서는 세션클러스터링을 위해 Redis를 사용하기도 하고, Cache를 위해서 사용하기도 하며, 여러 서버에서 공통으로 공유해야하는 정보를 담는 용도로 사용하기도 합니다. 필자는 챗봇을 개발중인데, 이중화된 서버에서 세션값을 공유하기위한 용도로 Redis를 사용하려고 합니다. 우선 이번 포스팅에서는 Redis 설치 및 설정, 그리고 간단한 사용법에 대한 포스팅입니다. ▶︎▶︎▶︎Redis Homepage 우선 위에서 Redis를 다운로드 받아줍니다. 그리고 다운로드 받..
Springboot,redis - Redis repository 간단한사용법! 우선 처음에 조금 헤메긴 했지만, Redis Repository를 사용하려면 기존에 어떠한 Datasource라도 존재를 해야하는 것 같다. 그래서 임의로 인메모리디비인 H2를 dependency하였고, 모든 Datasource는 기본설정으로 두었다. 이렇게 인메모리 디비 데이터소스를 이용함에도 불구하고, 실제로는 Redis에 데이터가 삽입되는 것을 볼수 있다. 이유는 잘모르지만....아시는 분 있으시면 알려주세요... 4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.brownfield.pss redis-cluster 0.0.1-SNAPSH..
Spring boot + JPA 환경에서 개발중 멀티스레드 환경에서 JPA를 사용하면서 겪었던 문제이다. 우선 원인은 멀티 스레드 환경에서 트랜잭션의 공유가 안되는 문제였다. [상황] CompletableFuture.runAsync()를 사용하여 Multi Thread 환경에서 JPA를 사용하는 상황이었다. public Object controllerMethod(@PathVariable long id, Locale locale) { CompletableFuture.runAsync(()->{ service.method(id); },executor) .exceptionally(e->{ log.debug("CompletableFuture.runAsync :::: exception - {}",e.getMessa..
오늘 포스팅할 내용은 간단히 JPA의 cascade 기능이다. 이전 포스팅 중에 해당 내용에 대해 포스팅한적이 있지만 조금 부족한 것같아서 다시 한번 정리할겸 글을 남긴다. 영속성 전이(cascade)란 쉽게 말해 부모 엔티티가 영속화될때, 자식 엔티티도 같이 영속화되고 부모 엔티티가 삭제 될때, 자식 엔티티도 삭제되는 등 부모의 영속성 상태가 전이되는 것을 이야기한다. 영속성전이의 종류로는 ALL, PERSIST, DETACH, REFRESH, MERGE, REMOVE등이 있다. 이름만 봐도 어디까지 영속성이 전이되는지 확 눈에 보일 것이다. 여기서는 별도로 각각을 설명하지는 않는다. 오늘의 상황 : A와 B라는 엔티티가 존재하고, 두 엔티티의 관계는 @ManyToMany 관계이다. 이 관계는 중간에 ..