2023-07-21-TIL TIL 2023-07-21-TIL Today I Learned Optimistic Lock vs Pessimistic Lock 동시에 같은 데이터를 수정할 때 갱신 손실을 막는 두 접근이다. 낙관적 락: 충돌이 드물다고 보고 락을 잡지 않는다. JPA에서는 @Version 필드를 두면 UPDATE의 WHERE 절에 읽었던 버전을 넣어, 그 사이 ... 2023/07/21 2023-TIL
2023-07-20-TIL TIL 2023-07-20-TIL Today I Learned JSR-305 https://skyul.tistory.com/68 https://jcp.org/en/jsr/detail?id=305 https://code.google.com/archive/p/jsr-305/ https://dzone.com/articles/when-to-us... 2023/07/20 2023-TIL
2023-07-19-TIL TIL 2023-07-19-TIL Today I Learned JUnit5 테스트 예제 저장소 JUnit 5 테스트를 작성할 때 참고할 예제 저장소들이다. 기본 기능을 보여 주는 예제(@DisplayName, @Nested, @ParameterizedTest, @ExtendWith 등)와 함께, JUnit 5 위에서 Cucumber로 BDD 시나리오를 ... 2023/07/19 2023-TIL
2023-07-18-TIL TIL Today I Learned org.hibernate.LazyInitializationException: could not initialize proxy @Transactional이 없으면 해당 에러가 발생한다. JPA에서 연관 엔티티를 LAZY로 매핑하면 Hibernate는 처음에 진짜 객체 대신 프록시를 넣어 둔다. 프록시는 필드에 처음 접근... 2023/07/18 2023-TIL
2023-07-03-TIL TIL 2023-07-03-TIL Today I Learned CQRS 패턴 CQRS(Command Query Responsibility Segregation)는 상태를 바꾸는 명령(command)과 상태를 읽는 조회(query)에 서로 다른 모델을 쓰는 패턴이다. Martin Fowler는 핵심을 정보를 갱신할 때와 읽을 때 다른 모델을 쓸 수 있다는... 2023/07/03 2023-TIL
2023-07-02-TIL TIL 2023-07-02-TIL Today I Learned Spring Boot에서 대소문자를 구분하지 않는 Enum 매핑 Enum.valueOf는 대소문자를 구분하므로 ?status=active나 {"status": "active"}는 ACTIVE로 변환되지 않는다. 변환 경로가 둘이라 해결도 둘로 나뉜다. 쿼리 파라미터와 경로 변수는 Spring... 2023/07/02 2023-TIL
2023-07-01-TIL TIL 2023-07-01-TIL Today I Learned JPA 자바 리플렉션으로 프레임워크에 대한 의존을 줄일 수 있다. JPA 구현체는 리플렉션으로 엔티티를 다룬다. 기본 생성자로 객체를 만들고, 필드나 접근자에 직접 값을 넣고 읽으며, 지연 로딩을 위해 엔티티를 상속한 프록시를 만든다. 그래서 엔티티는 특정 베이스 클래스를 상속하거나 프레임... 2023/07/01 2023-TIL
2023-06-28-TIL TIL 2023-06-28-TIL Today I Learned Redis 고가용성 Redis를 캐시가 아니라 세션 저장소나 주요 데이터 저장소로 쓰면 Redis 한 대의 장애가 곧 서비스 장애가 된다. 링크한 자료들이 다루는 고가용성 구성은 크게 세 단계다. 복제(replication): 마스터의 데이터를 복제본에 비동기로 복사한다. 읽기를 분산... 2023/06/28 2023-TIL
2023-06-26-TIL TIL 2023-06-26-TIL Today I Learned JPA findAll 안티 패턴 Vlad Mihalcea는 Spring Data의 모든 리포지토리가 상속받는 findAll()을 안티 패턴이라고 부른다. 메서드가 늘 손 닿는 곳에 있으니 테이블 전체를 메모리에 올린 뒤 Java에서 거르는 코드가 쉽게 만들어지고, 개발 데이터에서는 문제가 없... 2023/06/26 2023-TIL