고성능 자바 지속성 뉴스레터, 제65호
이번 고성능 자바 지속성 뉴스레터에서는 자바를 사용하여 데이터베이스를 다루는 개발자들을 위한 다양한 기사, 비디오, 워크샵, 그리고 스택오버플로우 답변을 공유합니다. 특히, MySQL의 온라인 스키마 마이그레이션, 고트래픽 웹사이트 운영 비용, 그리고 Hibernate 6.5의 새로운 @SoftDelete
어노테이션 등의 주제가 다뤄집니다.
고성능 자바 지속성 뉴스레터, 제65호
이번 고성능 자바 지속성 뉴스레터에서는 자바를 사용하여 데이터베이스를 다루는 개발자들을 위한 다양한 기사, 비디오, 워크샵, 그리고 스택오버플로우 답변을 공유합니다. 특히, MySQL의 온라인 스키마 마이그레이션, 고트래픽 웹사이트 운영 비용, 그리고 Hibernate 6.5의 새로운 @SoftDelete
어노테이션 등의 주제가 다뤄집니다.
Hibernate SoftDelete 어노테이션 사용법
이 글에서는 Hibernate SoftDelete 어노테이션을 사용하여 JPA 엔티티의 소프트 삭제 기능을 활성화하는 방법을 설명합니다. Tag
, Post
, PostDetails
, PostComment
엔티티를 포함한 도메인 모델을 사용하며, 이 기능을 사용하기 위해서는 Hibernate 6.4 이상으로 업그레이드해야 합니다.
심볼릭 링크를 사용하여 DB 데이터 폴더 이동하기
이 글에서는 Windows 시스템에서 심볼릭 링크를 사용하여 데이터베이스(DB) 데이터 폴더를 다른 파티션으로 이동하는 방법을 설명합니다. 이 방법은 C 파티션의 디스크 공간을 확보하는 데 도움이 됩니다. 심볼릭 링크를 생성하면 데이터가 D 파티션에 저장되어 C 파티션의 공간을 늘릴 수 있습니다.
책 리뷰 – 헬리돈 입문
자바 개발자를 위한 마이크로서비스 애플리케이션 개발 도구인 헬리돈에 대한 책 '헬리돈 입문'을 리뷰합니다. 이 책은 464페이지에 걸쳐 헬리돈의 두 가지 버전인 MP와 SE를 소개하며, 다양한 개발 도구와 기능을 다룹니다. 헬리돈을 사용할 계획이라면 이 책을 추천합니다.
고성능 자바 지속성 뉴스레터, 제64호
이번 고성능 자바 지속성 뉴스레터에서는 자바를 사용하여 데이터베이스 작업을 하는 개발자들에게 유용한 기사, 비디오, 워크샵, 그리고 StackOverflow 답변을 공유합니다. 특히, 자연 키의 단점, 자바 Enum 객체를 정수 열에 매핑하는 방법, 그리고 PostgreSQL의 확장 문제와 YugabyteDB의 도움에 대해 다룹니다.
JPA 및 Hibernate를 사용하여 Java Enum을 사용자 정의 값에 매핑하는 방법
이 글에서는 JPA와 Hibernate를 사용하여 Java Enum을 사용자 정의 값에 매핑하는 방법을 설명합니다. Hibernate 6은 기본적으로 EnumJavaType
을 사용하지만, CustomOrdinalValueEnumJavaType
클래스를 확장하여 사용자 정의 매핑 전략을 구현할 수 있습니다. 이는 레거시 애플리케이션 처리나 Enum 값의 재정렬이 필요한 경우에 유용합니다.
Hibernate의 JAVA_TIME_USE_DIRECT_JDBC 설정 작동 방식
이 글은 Hibernate의 JAVA_TIME_USE_DIRECT_JDBC
설정이 다양한 JDBC 드라이버와 어떻게 작동하는지 설명합니다. 특히, Oracle JDBC 드라이버는 모든 날짜-시간 객체 유형을 지원하지만, SQL Server, PostgreSQL, MySQL은 ZonedDateTime
을 지원하지 않을 수 있습니다. 설정 활성화 전에 JDBC 드라이버의 지원 여부를 확인하는 것이 중요합니다.
Hibernate WITH RECURSIVE 쿼리 사용법
이 글에서는 Hibernate WITH RECURSIVE 쿼리가 계층적 데이터 구조를 가져오는 방법을 설명합니다. 특히, post
와 post_comment
테이블 관계를 통해 자식 댓글의 전체 계층을 효과적으로 조회하는 방법을 소개하며, Hibernate 6의 새로운 기능을 활용하는 예시를 제공합니다.
자바 퍼시스턴스 고성능 뉴스레터, 제 63호
이 뉴스레터는 자바를 사용하여 데이터베이스를 작업하는 개발자들을 위한 기사, 비디오, 워크샵, 그리고 StackOverflow 답변을 다룹니다. 주요 내용으로는 Bluesky 플랫폼의 설계 및 확장, PostgreSQL의 쿼리 플랜 캐싱, 데이터베이스 스키마 안티 패턴, 그리고 여러 데이터베이스 도구의 최신 릴리스가 포함됩니다.
Hibernate ON CONFLICT DO 절에 대한 이해
Hibernate ON CONFLICT DO 절을 사용하여 SQL UPSERT 문을 휴대용 방식으로 실행하는 방법에 대해 설명합니다. 이 기능은 Hibernate 6.5부터 사용 가능하며, 데이터베이스에 따라 적절한 SQL 문을 생성합니다.
PostgreSQL을 이용한 대용량 결과 집합 파일로 내보내기
PostgreSQL의 COPY 명령어를 사용하여 대용량 결과 집합을 외부 파일로 내보내는 방법에 대해 설명합니다. 특히, ETL 프로세스에서 유용하며, COPY 명령어는 네트워크 오버헤드 없이 빠르게 데이터를 추출할 수 있습니다.
PostgreSQL의 plan_cache_mode 설정
PostgreSQL에서 plan_cache_mode
설정과 force_custom_plan
옵션을 사용하여 최적의 쿼리 실행 계획을 강제하는 방법에 대해 설명합니다. 특히, 값의 분포가 불균형한 post
테이블을 예로 들어, 인덱스 활용과 쿼리 효율성을 높이는 방법을 다룹니다.
FetchType.EAGER를 fetchgraph로 재정의하기
고성능 자바 지속성을 위한 4일간의 온라인 워크숍이 5월 21일부터 24일까지 열립니다. 로깅, 테스트, 스키마 관리, 데이터 모델링, 배치 처리, 페칭, 트랜잭션 및 동시성 제어, 캐싱 등의 최고의 실천 방법을 배울 수 있는 기회입니다. 워크숍에 참여하고 싶다면 지금 자리를 예약하세요!
고성능 자바 지속성 뉴스레터, 제62호
이번 뉴스레터에서는 자바를 사용하여 데이터베이스 작업을 하는 개발자들을 위한 다양한 기사, 비디오, 워크숍, 그리고 StackOverflow 답변을 다룹니다. 특히, MySQL, SQL의 50주년, JPA 최적화 워크숍 등의 주제가 포함되어 있습니다.
OneToOne 선택 속성을 최적으로 사용하는 방법
OneToOne 선택 속성을 사용하여 N+1 쿼리 문제를 피하는 방법에 대해 설명합니다. 특히, @MapsId
주석을 사용하고 부모 측 @OneToOne
연관 관계에서 optional = false
를 설정하는 것이 중요합니다. 이 방법은 성능 향상에 도움을 줄 수 있습니다.
SQL PERCENTILE_CONT 함수를 사용한 백분위수 계산 방법
이 기사에서는 SQL PERCENTILE_CONT 함수를 사용하여 백분위수를 계산하는 방법을 설명합니다. 주식 및 지수의 역사적 가격 데이터를 보유한 quotes
테이블을 예로 들어, S&P 500 지수의 중앙값, 75번째, 95번째, 99번째 백분위수를 계산하는 예시를 제공합니다. SQL Server에서는 문법이 조금 다르므로 데이터베이스 매뉴얼을 확인하는 것이 중요합니다.
PostgreSQL의 FOR UPDATE와 FOR NO KEY UPDATE 비교
PostgreSQL에서 부모 레코드를 잠그고 자식 행을 삽입할 때 FOR UPDATE와 FOR NO KEY UPDATE 잠금 절의 차이를 탐구합니다. FOR UPDATE는 다른 트랜잭션이 자식 테이블에 레코드를 삽입하는 것을 방지하지만, FOR NO KEY UPDATE는 자식 레코드의 삽입을 방해하지 않고 부모 레코드를 잠글 수 있습니다.
고성능 자바 지속성 뉴스레터, 제 61호
이번 뉴스레터는 자바를 사용하여 데이터베이스 시스템과 상호작용하는 개발자들을 위한 기사, 비디오, 워크숍, 그리고 StackOverflow 답변을 다룹니다. 주요 주제로는 Jakarta Persistence 3.2의 개선사항, PostgreSQL의 다양한 인덱싱 옵션, AI와 추천 시스템을 위한 벡터 유사성 검색, 그리고 PostgreSQL의 HOT 최적화 등이 있습니다.
PostgreSQL 힙-오직-튜플(HOT) 업데이트 최적화
PostgreSQL은 HOT 업데이트 최적화를 제공하여 레코드가 수정될 때 모든 인덱스 항목을 업데이트하는 부담을 피합니다. 이 최적화는 페이지가 완전히 채워지지 않았고 업데이트가 인덱스가 있는 열을 변경하지 않을 때만 발생합니다. 자주 변경되는 열을 인덱싱하면 HOT 최적화의 이점을 누릴 수 없으므로, 쓰기 성능을 향상시키고 쓰기 증폭을 줄이기 위해 이를 피하는 것이 좋습니다.
PostgreSQL 인덱스 유형
이 글에서는 PostgreSQL에서 제공하는 다양한 인덱스 유형(B+Tree, Hash, GIN 등)을 살펴보고, 각각의 인덱스가 어떤 상황에 적합한지 알아봅니다. SQL 쿼리 속도를 높이는 데 중요한 역할을 하는 인덱스 선택에 대한 이해를 돕습니다.