DB28 [jOOQ] ad-hoc 방식을 통한 One-to-One, One-to-Many 조회 들어가기 전에지난 번에 jOOQ가 어떻게 동작하는지를 설명하고 간단한 CRUD 예제 및 테스트 코드를 정리한 글을 올렸었다. [jOOQ] jOOQ는 처음이라들어가기 전에이번 회사에서 처음으로 jOOQ를 사용하게 됐다. MyBatis와 JPA만 사용했기 때문에 jOOQ를 어떤 이유에서 사용하는지 정확히 파악하기 위해 여러 글들을 봤다. 그래서 이번 글에서는 jOOQjustsora.tistory.com 이번에는 위의 글처럼 단건 혹은 목록 조회일 때가 아니라 일대일, 일대다 관계일 때 jOOQ를 어떻게 활용할 수 있는지 정리해 보고자 한다. 아래의 예제 코드처럼 Nested DTO를 포함해서 조회해야 할 때 참고할 수 있겠다.public record SampleDto ( // jOOQ를 통해 조회해야 할 c.. 2025. 2. 2. [PostgreSQL] Docker를 활용한 Streaming Replication 설정 가이드 들어가기 전에앞서 PostgreSQL에서의 built-in replication 방식에 대해 학습했다. [PostgreSQL] Chapter 26. High Availability, Load Balancing, and Replication※ 이 글은 PostgreSQL의 built-in replication 방식을 학습하기 위해 일부 공식 문서와 관련 개념을 정리한 글입니다. 0. 서론본론에 앞서 중요한 개념인 고가용성과 로드 밸런싱에 대해 알아보자. 고justsora.tistory.com 위의 내용을 토대로 각 방식에 대해 간단히 정의내려보자면 다음과 같다.File-Based Log-Shipping : WAL 기록을 파일로 보내 복제하는 방식Streaming Replication : 주 서버에서 W.. 2024. 10. 31. [PostgreSQL] Chapter 26. High Availability, Load Balancing, and Replication ※ 이 글은 PostgreSQL의 built-in replication 방식을 학습하기 위해 일부 공식 문서와 관련 개념을 정리한 글입니다. 0. 서론본론에 앞서 중요한 개념인 고가용성과 로드 밸런싱에 대해 알아보자. 고가용성(High Availability, HA)을 쉽게 말하자면 한 장비 또는 여러 장비가 다운될 때도 시스템이 계속 동작하게 하는 것이다. 고가용성을 달성하기 위해서 서버를 이중화(Redundancy)해서 주 서버에 장애가 발생했을 때 예비 서버로 빠르게 전환될 수 있도록 해야 한다.서버, 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. 고(高)가용성이란 "가용성이 높다"는 뜻으로서, "절대 고장 나지 않음"을 의미한다. 고.. 2024. 10. 14. [jOOQ] jOOQ는 처음이라 들어가기 전에이번 회사에서 처음으로 jOOQ를 사용하게 됐다. MyBatis와 JPA만 사용했기 때문에 jOOQ를 어떤 이유에서 사용하는지 정확히 파악하기 위해 여러 글들을 봤다. 그래서 이번 글에서는 jOOQ가 무엇인지 그리고 평소에 잘 사용하던 JPA와 비교해 어떤 점이 다른지를 중점으로 다뤄볼 예정이다. jOOQjOOQ는 Java Object Oriented Querying로 자바 코드를 이용해서 type-safe한 SQL 쿼리를 생성할 수 있게 해주는 데이터베이스 인터페이스를 말한다. 그렇다면 어떻게 type-safe한 쿼리를 작성할 수 있는 걸까? 아래 문구를 보면 알 수 있듯이 데이터베이스 접근을 통해 자바 코드를 생성해 주는데 개발자는 이 메타 모델을 통해서 type-safe한 쿼리를 작성할.. 2024. 7. 12. [MyBatis] selectKey로 다중 컬럼 값 가져오기 들어가기 전에 JPA에서는 save() 메소드를 호출하면 생성된 객체를 반환해 주는데 MyBatis는 그런 기능이 따로 없다. 그러면 어떻게 구현하면 insert문이 실행되고 저장된 객체 정보를 가져올 수 있을까 고민하다가 selectKey를 사용하게 됐다. 프로젝트에서 어떻게 적용했는지 남겨보고자 한다. selectKey insert문이 실행되기 전, 후에 원하는 컬럼 값을 가지고 올 수 있는 태그이다. 아래처럼 insert 태그 내부에 원하는 속성들을 지정해서 가져오고 싶은 값을 가져온다. -- 출처 : https://mybatis.org/mybatis-3/sqlmap-xml.html select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1 .. 2023. 5. 30. [MyBatis] BindingException 해결 (feat. IntelliJ Gradle 설정) Step 0. 상황 평소와 같이 Postman으로 간단한 테스트를 하기 위해 로그인 API로 요청을 보냈다. 로그인 API에 웬 401이지 하면서 콘솔 창을 보니 BindingException이 발생하고 있었다. Step 1. 원인 @Param 없이도 이때까지 잘 작동하고 있었는데 왜 갑자기 BindingException이 발생하는 걸까 생각하며 열심히 구글링을 했는데 다행히도 바로 원인을 찾을 수 있었다. 갑자기 IntelliJ 속도가 너무 느려져서 설정 값을 건드리다가 예전에 아래 박스 내에 있는 값을 Gradle 대신 IntelliJ IDEA로 선택하면 속도가 빨라진다는 이야기를 들었어서 변경했었는데 이게 문제였다. Gradle을 사용하면 자동으로 Binding을 해주는데 IntelliJ IDEA를.. 2023. 5. 29. 이전 1 2 3 4 5 다음