반응형 전체 글342 JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 하는지 ddl-auto 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정입니다. 이 옵션은 application.properties 또는 application.yml 파일에서 설정할 수 있으며, 다양한 값에 따라 데이터베이스 스키마에 대해 다른 동작을 수행합니다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 존재합니다.각 옵션에 대한 설명을 해주시겠어요?none으로 설정하면 데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않습니다. 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하며, 프로덕션 환경에서 주로 사용됩니다.validate는 애플리케이션이 시작될 때,.. 2025. 2. 28. Spring Data JPA에서 새로운 Entity인지 판단하는 방법 @Overridepublic boolean isNew(T entity) { if(versionAttribute.isEmpty() || versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { return super.isNew(entity); } BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return versionAttribute.map(it -> wrapper.getPropertyValue(it.getName()) == null).orElse(true);}새로운 Entity인.. 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. 이전 1 2 3 4 ··· 38 다음 728x90 반응형