본문 바로가기
반응형

Blog135

2025-03-04 (화) 데이터베이스 설계 및 코틀린 비동기 처리 관련 개념 학습복합 키 설정, 테이블 구조 최적화, MDC(Context Propagation) 활용법1️⃣ 복합 키를 활용하면 데이터 무결성을 유지하면서도 중복 저장을 방지할 수 있다.2️⃣ MySQL의 CHECK 제약 조건을 사용하면 특정 컬럼 값의 범위를 제한할 수 있다.3️⃣ SMALLINT UNSIGNED는 0~65,535까지 저장 가능하며, 리포트 기간을 저장할 때 적절하다.4️⃣ Kotlin의 runBlocking(Dispatchers.IO + MDCContext())을 사용하면 I/O 작업을 최적화하면서도 로깅 컨텍스트를 유지할 수 있다.✅ 1. 데이터베이스 설계 및 복합 키 설정📌 1) 복합 키(Composite Primary Key) 설정하나의.. 2025. 3. 4.
2025-02-28 (금) 📌 결론MySQL JSON 타입은 String, List, Map로 매핑 가능TIME 타입은 LocalTime으로 변환하여 저장하면 SQL에서 직접 시간 비교 가능참조 무결성을 비즈니스 로직에서 관리하는 경우 FOREIGN KEY 없이 KEY만 설정 가능JSON 필드를 활용하면 요일 정보 등을 직관적으로 저장 가능하고, SQL에서 직접 변환 가능부모-자식 관계 데이터 조회 시 JOIN, 재귀 쿼리 등을 활용하여 필요한 데이터 구조를 가져올 수 있음✅ 1. MySQL Number 타입과 Java/Kotlin에서의 매핑MySQL의 Number 타입은 정수(TINYINT, SMALLINT, INT, BIGINT) 와 부동소수점(FLOAT, DOUBLE, DECIMAL) 으로 나뉜다.Kotlin에서는 Int,.. 2025. 2. 28.
2025-02-25 (화) 2025-02-25 (화)TIL (Today I Learned) - DDL & 비즈니스 로직💡 오늘 배운 핵심 요약 1️⃣ DDL을 작성할 때는 JOIN 최적화, FK 제약, INDEX 설계를 신중하게 고려해야 함2️⃣ LEFT JOIN을 사용할 때 조건 필터링을 적절히 활용하여 성능 최적화3️⃣ 비즈니스 로직에서 BATCH UPDATE를 활용하면 성능을 크게 개선 가능4️⃣ 트랜잭션을 효과적으로 관리하여 데이터 정합성을 유지하는 것이 중요1️⃣ DDL 작성 및 최적화🔹 테이블 설계 시 고려한 사항LEFT JOIN 최적화를 위한 인덱스 전략 수립자주 사용되는 JOIN 대상 컬럼에 인덱스 적용외래키 관계가 설정된 경우에도, 실제 쿼리 성능을 고려한 인덱스 추가 고려기본 키(PK)와 외래 키(FK) 설정.. 2025. 2. 25.
2024-02-24 (월) 2025-02-24 (월)🎯 오늘의 핵심 정리✅ DTO 조회 시 selectNew를 사용하여 성능 최적화✅ JOIN이 일반적으로 더 빠르며, 서브쿼리는 꼭 필요한 경우에만 활용✅ fetchOne()은 유일한 결과가 보장될 때만 사용하고, 다수의 결과 가능성이 있으면 fetchFirst() 사용✅ null 처리는 ?:(엘비스 연산자)를 활용하여 안전하게 기본값 적용✅ 테스트 코드 리팩토링을 통해 중복을 줄이고 가독성을 높이는 것이 중요함📌 TIL (Today I Learned) - Kotlin + JDSL 활용 및 테스트 최적화1️⃣ 리스트 조회 시 findAll()의 반환값 처리조회 결과가 없을 경우 null이 아닌 emptyList() 반환emptyList()를 반환하면 null 체크 없이 안전하게.. 2025. 2. 24.
2025-02-21 (금) 📌 TIL (Today I Learned) - 2025-02-21✨ 오늘의 핵심 정리✔ returnsArgument(0)는 동일 객체 반환이지만, 객체 불일치 시 에러 발생 가능 → match {} 활용 가능✔ Git 커밋 컨벤션에서 한 줄 코드 추가는 fix: 또는 refactor: 사용이 적절✔ @Valid는 컨트롤러 DTO 검증용, 서비스에서는 Validator 필요 여부 판단 후 사용✔ @Auth 인터셉터 테스트가 있다면 컨트롤러 단위 테스트는 생략 가능하나, 통합 테스트는 고려할 필요 있음✔ match {}를 활용하면 MockK에서 객체 비교 문제를 해결할 수 있음1. MockK에서 returnsArgument(0)의 의미returnsArgument(0)는 첫 번째 인자로 전달된 객체를 그대로.. 2025. 2. 21.
2025-02-20 (목) 📌 TIL (Today I Learned)🚀 오늘의 핵심 정리Kotest AbstractProjectConfig는 프로젝트 전역 테스트 설정을 담당extensions()을 활용해 커스텀 확장 기능을 등록할 수 있음GitLab에서 authored와 committed가 다르게 표시되는 이유는 rebase, cherry-pick, amend 때문Kotlin에서 if와 let의 성능 차이는 거의 없지만, 일반적인 조건문(if)이 더 직관적Git에서 cherry-pick을 하면 author는 유지되지만 committer는 변경됨🔹 1. Kotest의 AbstractProjectConfigKotest에서 전역 설정을 정의하는 추상 클래스테스트 실행 방식(병렬 실행, 실행 순서, 확장 기능 등)을 제어할 수 있.. 2025. 2. 20.
2025-02-19 (수) 📌 TIL (Today I Learned) - JPA & Kotlin Best Practices오늘은 Kotlin + JPA를 활용한 엔티티 매핑과 API 설계에 대해 깊이 있게 학습했다.특히, @OneToOne, @OneToMany, FetchType.LAZY, @Column, @JoinColumn 등 JPA 관련 개념을 정리했다.🏆 오늘의 핵심 정리✔ @OneToOne 관계는 한 쪽에만 @JoinColumn을 설정하고, 반대쪽에서는 mappedBy를 사용해야 한다.✔ @OneToMany ↔ @ManyToOne 관계는 반드시 쌍으로 매핑해야 FK가 정상적으로 생성된다.✔ FetchType.LAZY를 사용할 경우, 필드는 var로 선언해야 프록시 객체를 할당할 수 있다.✔ @Column을 사용하면 컬.. 2025. 2. 19.
2025-02-18 (화) 2025-02-18 (화)📌 TIL (Today I Learned) - Kotlin @Suppress("UNCHECKED_CAST")와 제네릭 활용🎯 오늘의 결론✔ @Suppress("UNCHECKED_CAST")는 필요할 때만 사용하고, 남용하지 말자.✔ 제네릭을 활용하면 UNCHECKED_CAST 없이 안전한 코드 작성 가능.✔ reified 키워드를 활용하면 런타임에서도 타입 안정성을 유지할 수 있음.💡 결론: 제네릭을 적극 활용하여 타입 안정성을 높이고, 불필요한 @Suppress 사용을 줄이자! 🚀🚀 1. @Suppress("UNCHECKED_CAST")Kotlin에서 캐스트 관련 경고를 억제하는 어노테이션.주로 제네릭 타입 변환 시 발생하는 UNCHECKED_CAST 경고를 숨길 때 .. 2025. 2. 18.
2025-02-17 (월) 2025-02-17 (월)🚀 오늘의 핵심 배움API에서 발생할 수 있는 예외를 미리 정의하고, @ExceptionSwagger를 활용하여 API 문서화와 일관성을 유지해야 한다.AES-GCM 암호화된 데이터를 저장할 때, 충분한 VARCHAR 길이를 설정하는 것이 중요하다.Boolean 값을 TINYINT(1)로 저장할 때, 1과 0 이외의 값이 들어올 가능성이 있으므로 애플리케이션에서 검증이 필요하다.JPA @OneToOne 관계에서는 FetchType.LAZY를 기본으로 설정해야 성능 이슈를 줄일 수 있다.Hibernate Bytecode Enhancement를 활성화하면 대부분의 EAGER 관계가 LAZY로 최적화되지만, 명시적으로 EAGER인 필드는 그대로 유지된다.1️⃣ API 설계 및 예외 .. 2025. 2. 17.
728x90
반응형