분류 전체보기 (243) 썸네일형 리스트형 [Diary] Domain Driven Design에서 Spring Data Repository 의존성 역전하기 개발을 진행하면서 Repository는 데이터베이스와의 연동을 담당하는 핵심 구성 요소로 사용됩니다.일반적으로 Spring Data JPA를 사용하여 JpaRepository가 있죠. 이를 상속받아 필요한 DB CRUD 기능을 구현하게 됩니다.그렇다면 Domain Driven Design(DDD)에서는 이러한 Repository 클래스들이 어느 계층에 위치해야 할까요? 그리고 어떤 구조로 구현하는 것이 이상적일까요?이 글에서는 Repository에 대한 의존성 역전(DIP)을 구현하는 방법과 그 이유에 대해 자세히 다루고자 합니다.RepositoryRepository는 애플리케이션에서 데이터 접근 계층을 담당하는 핵심 구성 요소이다.데이터베이스와의 상호 작용을 추상화하여 비즈니스 로직이 데이터 저장소의 .. [PS] 프로그래머스 level 2 마법의 엘레베이터 java 풀이 코딩테스트 연습 - 마법의 엘리베이터 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr초기 문제 접근처음엔 백트래킹? BFS? 등 완전 탐색을 생각했다.근데 그건 말이 안 된다. 너무나 많은 경우의 수가 존재한다.그리디인가? 동전 거스름돈처럼 큰 수부터 나누면 되는가?근데 음수도 존재해서 이것도 아니다.직접 if 문으로 조건을 따져야 하는 건가? 현재 자릿수가 6이면 10에서 빼는 거로 하고..그러면 올림의 경우, 앞자리에 1을 더해야 하는데.. 만약 더하는 게 더 많은 돌을 필요로 하면..? (머릿속이.. [PS] 백준 14940 쉬운 최단거리 java 풀이 (자꾸 3%에서 틀리네) 14940번: 쉬운 최단거리 (acmicpc.net)문제 접근전형적인 BFS 문제 같다.시작점부터 시작해서 BFS 시작그런데 자꾸 3%에서 틀렸다 나오길래 질문게시판을 찾아보았다.메모리 초과다시 같은 곳을 방문하지 않도록 방문 표시를 해주어야 한다. 안 그러면 Queue에 많은 좌표가 가득차게 된다.틀렸습니다도달할 수 없는 곳은 -1로 출력을 해야 한다. 이 처리를 안 해주면 3퍼에서 틀렸다고 나온다.따라서 필자는 방문 표시를 isVisited 배열을 만드는 대신 방문한 곳은 map 값을 -1로 바꾸어주었고, 도달하지 못한 곳은 이 값이 아직 1로 남아있기 때문에 이를 처리해주었다.코드import java.io.BufferedReader;import java.io.IOException;import jav.. [Diary][Spring] Spring Data Cassandra에서 @CreatedDate가 안 되는 문제 해결 (Spring Data는 이 데이터가 새 데이터인지 모른다.) Spring Data Cassandra을 사용하면서, @EnableCassandraAuditing를 적용해도 @CreatedDate 필드에 값이 들어가지 않고 null이 저장되는 문제가 발생했습니다. 이 글에서는 문제 상황 및 원인을 분석하고 해결합니다.문제 상황: @EnableCassandraAuditing를 적용해도 null이 들어간다.감사 레코드를 삽입하기 위해 다음과 같이 BaseEntity를 구현했다.이를 Cassandra DB 테이블에 매핑할 클래스에 상속받았다.이후 Auditing을 활성화하기 위해 @EnableCassandraAuditing을 적용했다.또한 @CreatedBy, @LastModifiedBy를 사용하기 위해 getCurrentAuditor를 임시로 구현했다.테스트를 위해 @I.. [TIL] Spring Data Cassandra와 Spring Data JPA의 차이? (NoSQL과 RDBMS의 차이) *chatGPT4o 의 답변입니다.Q. does spring data cassandra has concept of transactional? what's difference in spring data jpa?Spring Data Cassandra는 Spring Data JPA와 같은 방식으로 트랜잭션을 지원하지 않습니다. 두 기술에서 트랜잭션이 다르게 작동하는 이유와 차이점을 설명하겠습니다.1. Spring Data JPA에서의 트랜잭션 지원Spring Data JPA(관계형 데이터베이스를 기반으로 하는)는 @Transactional 애노테이션을 사용하여 트랜잭션을 완전히 지원합니다. 이는 관계형 데이터베이스가 기본적으로 ACID(Atomicity, Consistency, Isolation, Durabi.. [Diary][Spring] Spring에서 Module에 BaseEntity를 추가하면, @EntityListeners(AuditingEntityListener.class)가 잘 되나? 문제 상황createdAt, updatedAt과 같은 감사 로그는 공통적으로 사용되는 필드가 많기 때문에 BaseEntity를 자주 사용한다.그런데 이를 모듈에 추가하고, 메인 프로젝트에서 이 모듈로 추가한 BaseEntitiy를 상속하면 잘 될까?그리고 위와 같이, BaseEntity를 사용하기 위한 엔티티 및 설정을 추가해주었다.처음엔 안 될거라고 생각했다.왜냐하면 우선 Component Scan의 대해 생각해보았다.Component Scan 범위는 @SpringbootApplication 에서 기본적으로 이 어노테이션이 적용된 클래스를 포함한 하위 패키지인데,추가한 모듈은 범위 밖에 있기 때문에 Bean 을 못 찾고, 마찬가지로 JPA Audit 관련 기능도 BaseEntity를 찾지 못하겠지? 란.. [PS] 백준 18870 좌표 압축 java 풀이 18870번: 좌표 압축 (acmicpc.net)초기 문제 접근일단 문제 이해부터가 어려워서 질문 게시판을 찾아보니,그냥 이 배열 중 자기보다 낮은 원소의 개수를 출력하는 것 이었음근데 최대 N이 1,000,000 이니까 이중 for 문 쓰면 무조건 터질 것 같음정렬하고 하나하나 비교하나..?조금 찾아보니 이진 탐색을 사용하면 된다고 나와있음GPT의 문제 접근하지만 단순히 Map 사용으로 문제를 해결할 수 있었음각 순위를 표시할 rank = 0을 선언함정렬한 배열을 첫 번째 인덱스부터 순회함Map 안에 현재 순회하는 값이 없다면 새로 삽입 후 rank++결과적으로 숫자 별로 순위가 Map에 저장이 됨코드import java.io.BufferedReader;import java.io.IOException;.. [Diary][Spring] Spring Cloud Gateway에 인가의 책임을 부여해볼까? 프로젝트를 진행하면서 게이트웨이를 구현하는 역할을 담당하였습니다. 저희 팀은 JWT 인증 및 엔드포인트 별 권한 검증을 게이트웨이에서 구현하기로 결정했습니다.그러다가 제가 생각했던 문제점과 문제 해결을 위해 시도한 방법, 그리고 그 방법의 문제점을 소개하고자 합니다. 문제 상황: Spring Cloud Gateway의 재시동 문제엔드포인트 별 권한 검증을 Gateway에서 하기로 했다. 따라서 Reactive Spring Security를 사용해서 필터 체인에 구현했다.하지만, 각 서비스별 인가 정책이 바뀐다면 이를 반영하기 위해 Gateway의 코드를 수정하고, 재시동해야 하는 문제가 있다. 이러한 문제는 모든 엔드포인트의 라우팅을 담당하는 Gateway에 있어 좋지 않다고 판단했다.이에 무중단으로 정.. 이전 1 2 3 4 5 6 ··· 31 다음