AWSSpringGradleAPI 문서이벤트 소싱 (CQRS)JPA동적쿼리페이지네이션트랜잭션SecurityJAVAToolHTTPLOMBOKTEST데이터 베이스AWSAWS / CloudWatch / 로그 파일 지정과 로그 이벤트 수집EC2에 CloudWatch Agent 구성하여 모니터링하는 방법EC2 에서 codedeploy log 확인springboot aws s3 사진 업로드HTTPS 연결SSL 인증서 받기 SpringGradlebuild.gradle 에서 다양한 방식으로 변수 사용하기. API 문서springdoc-openapi v1.5.12OpenAPI 3.0을 사용하여 Spring REST API 문서화 jwthttps://springdoc.org/#how-to-configure-global-security-schemes 이벤트 소싱 (CQRS)Java의 CQRS 및 이벤트 소싱Axon 과 같은 여러 도구와 프레임워크가 있지만 기본 사항을 이해하기 위해 Java로 간단한 응용 프로그램을 만들겠습니다. 이벤트 소싱 은 애플리케이션 상태를 순서가 지정된 이벤트 시퀀스로 유지하는 새로운 방법을 제공합니다 간단히 말해서 CQRS는 애플리케이션 아키텍처의 명령 및 쿼리 측을 분리하는 것 시스템 쿼리는 결과를 반환하고 의 관찰 가능한 상태 를 변경하지 않습니다 .https://recordsoflife.tistory.com/661JPA동적쿼리동적쿼리 비교글1동적쿼리 비교글2동적쿼리 비교글3 Criterahttps://happygrammer.tistory.com/https://www.baeldung.com/hibernate-criteria-querieshttps://friends-aihaja.tistory.com/entry/13-JPQLhttps://milenote.tistory.com/137https://www.baeldung.com/spring-data-criteria-querieshttps://docs.spring.io/spring-data/jpa/docs/current/reference/html/#:~:text=The most important part of the class name that corresponds to the fragment interface is the Impl postfix. customhttps://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.single-repository-behavior 페이지네이션페이지네이션Pagination 이 대체 뭘까?페이지네이션, 커서 기반? 페이지 기반?커서 기반 페이지네이션JPA를 이용하여 cursor 기반 페이징 구현언젠가부터 무한 스크롤 을 이용한 페이징 방식이 우리들에 스며들기 시작했다. 이는 과거의 1, 2, 3... 의 페이지를 클릭하여 다음 콘텐츠를 보는 것이 아니라, 페이스북처럼 마지막 콘텐츠를 보게 되면 다음 페이지가 로딩되어 보이는 것을 의미한다. 그러나 SNS에서는 일반적으로 사용하는 Offset 기반의 페이징을 사용하게 되면 문제가 생길 수 있다.https://alwayspr.tistory.com/45왜 오프셋 페이징보다 커서 페이징일까?※ 이 글은 위 글을 의역한 글입니다. 커서 기반 페이징이 가장 효율적인 방법이며, 가능한 항상 사용되어야 한다 -페이스북 개발자 페이징은 책 페이지처럼 데이터를 묶음으로 분리하는 과정이다. 페이징은 크게 2개로 나뉘는데, 둘 중 뭐가 좋을까? 한 번 알아보자. 이 방법은 수십년동안 효과적으로 사용된 방법이다. OFFSET 값을 포함한 SQL 쿼리문을 동반한다.https://bbbicb.tistory.com/40 트랜잭션트랜잭션 관련 자료velog.iohttps://velog.io/@guswns3371/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B2%A9%EB%A6%AC%EC%88%98%EC%A4%80트랜잭션 격리 수준(Isolation Level)개발을 하다 보면 여러 스레드에서 동시에 하나의 자원에 접근하는 경우가 있다. 접근을 적절하게 제한하지 않는다면 생각지 못한 버그가 발생할 수 있다. 게다가 이런 경우는 디버깅하기도 굉장히 어렵다. 데이터베이스도 N개의 트랜잭션을 동시에 처리하다 보면 같은 데이터에 접근할 수 있다. 트랜잭션의 목적은 로직의 흐름 속에서 데이터를 일관되게 처리하기 위한 것이나, 동시에 같은 데이터에 write 접근을 하는 경우엔 문제가 될 수 있다.https://private-space.tistory.com/97[JPA] 비관적 락 , 낙관적 락JPA를 사용하게 되면 트랜잭션 격리 수준이 READ COMMITTED 정도가 된다. 격리 수준 READ UNCOMMITTED (거의 안 써요!) 커밋되지 않은 데이터를 읽을 수 있음 -> Dirty Read , Dirty Write 발생 가능 READ COMMITT..https://k3068.tistory.com/92[JPA] 비관적 락과 낙관적 락, 트랜잭션의 격리 수준얼마 전 면접에서 질문을 받았지만 전혀 몰랐던 비관적 락과 낙관적 락 개념. 다행히 김영한님의 자바 ORM 표준 JPA 프로그래밍에서 관련 내용을 소개하고 있어, 참고하여 정리해 보았다. 이 글은 다음 내용을 다..https://kafcamus.tistory.com/48 Custom Repo NamingSecuritycorshttps://kangwoojin.github.io/programing/spring-security-basic-ignoring/Spring Security Basic - IgnoringSpringdoc JWT 토큰 글로벌 인증캡쳐 JAVAgenericJava StreamJava map vs flatMap.map()과 .flatMap()의 차이자바 map 메서드와 flatMap 메서드의 차이Map과 Flatmap의 차이 enum 상태머신What is a State Machine ?Java enum-based state machine (FSM): Passing in eventsImplementing Simple State Machines with Java Enums상태다이어그램 Interesting features in Java 17jdk17 pattern matchingjdk17 sealedclasssealedClasshttps://www.cargurus.dev/Algebraic-Data-Types-for-java-devs/ https://www.programiz.com/java-programming/nested-inner-class 병렬스트림 정말 빠를까1병렬스트림 정말 빠를까2병렬스트림 어떻게 동작하는걸까?ParallelStream의 결과를 List에 저장해보자 java consumerTooldirenv폴더별 환경 관리를 위한 direnvintellij 단축키 이슈intellij 탐색 단축키 HTTPHTTPLOMBOKLombok - getter/setter의 prefix 관련 설정 TEST단위 테스트를 위한 ReflectionTestUtilsReflectionTestUtils https://effortguy.tistory.com/177 데이터 베이스MySQL InnoDB lock & deadlock 이해하기InnoDB 엔진에서 쿼리별 잡히는 lock