spring6 MyBatis에서 동적 SQL 제대로 쓰는 법 (if, choose, where, trim) MyBatis는 SQL을 XML로 작성하는 방식이기 때문에, 동적 SQL 처리는 매우 중요합니다.실무에서는 입력값에 따라 조건을 달리하거나, 특정 필드만 업데이트하는 등 유연한 쿼리 작성이 필요합니다.이럴 때 MyBatis의 , , , 같은 동적 SQL 태그를 잘 활용하면 효과적으로 처리할 수 있습니다.1. : 조건 분기 처리의 기본가장 많이 사용하는 태그입니다.조건에 따라 SQL 일부를 추가하거나 생략할 수 있습니다. SELECT * FROM users WHERE 1 = 1 AND username = #{username} AND age = #{age} WHERE 1=1은 조건이 없어도 SQL 문법 오류가 나지 않게 하기 위한 패턴입니다.뒤에 오는 AND 조건들을 자연스럽게 .. 2025. 6. 7. @Transactional이 작동하지 않는 진짜 이유 Spring에서 트랜잭션 처리를 할 때 가장 많이 사용하는 애노테이션이 @Transactional입니다.하지만 분명히 @Transactional을 붙였는데도 롤백이 되지 않거나, 트랜잭션이 작동하지 않는 현상을 겪는 경우가 많습니다.이 글에서는 그런 상황들이 왜 발생하는지, 그리고 어떻게 해결할 수 있는지 실제 사례 중심으로 살펴봅니다.✅ 기본 개념 정리@Transactional은 Spring AOP 기반으로 작동합니다.즉, 프록시 객체를 통해 메서드 호출을 가로채서 트랜잭션을 시작하거나 커밋/롤백을 결정합니다.❌ 트랜잭션이 작동하지 않는 흔한 원인1. 자기 자신 호출 (self-invocation)@Servicepublic class UserService { @Transactional pub.. 2025. 5. 24. [Java] Optional이란?? Java 8부터 도입된 Optional은 NullPointerException을 방지하고 명시적으로 null 가능성을 표현할 수 있도록 도와주는 컨테이너 클래스입니다. Optional을 사용하면 null 체크를 보다 선언적으로 처리할 수 있습니다.✅ Optional의 바람직한 사용 예public Optional getUserEmail(Long userId) { User user = userRepository.findById(userId); return Optional.ofNullable(user.getEmail());}Optional.ofNullable()을 통해 null이 될 수 있는 값을 안전하게 감쌉니다.클라이언트 코드에서는 isPresent(), ifPresent(), orElse() .. 2025. 5. 23. Springboot에서 h2 Database 설정 Springboot를 사용하면서 간단하게 인메모리 데이터베이스 구성하여 확인하기 위해 사용합니다. 1. dependency 추가 (maven) - DB연결을 하기 위한 jdbc 인터페이스 추가 - h2 dependency를 추가 (사용하는 DB에 따라 맞는 dependency를 추가합니다.) org.springframework.boot spring-boot-starter-jdbc com.h2database h2 runtime 2. Configuration application.yml (Springboot 프로젝트에 포함된 application.properties 또는 application.yml에 설정) spring: h2: console: enabled: true path: /h2-console dat.. 2021. 12. 10. 이전 1 2 다음 반응형