LoGin
article thumbnail
[JPA] @PrePersist, @PreUpdate로 엔티티 값 자동 처리하기
Back End/Spring 2026. 3. 23. 17:10

@PrePersist @PrePersist는 엔티티가 처음 저장되기 직전에 실행되는 메서드이다.INSERT 쿼리가 나가기 전에 자동으로 호출된다. @PrePersistpublic void prePersist() { if (this.boardKey == null) { this.boardKey = UUID.randomUUID().toString(); } this.createDt = LocalDateTime.now();} 위 코드는 다음과 같은 역할을 한다.boardKey가 없으면 UUID 자동 생성생성 시간(createDt) 자동 세팅수정 시간(updateDt)도 초기값으로 세팅 @PreUpdate @PreUpdate는 엔티티가 수정될 때,UPDATE 쿼리가 실행되기 직전에 호출된다. @PreUpda..

article thumbnail
프로젝트를 시작하며 아키텍처(Architecture)를 정의해보았다.
Back End 2026. 3. 22. 22:53

새로운 프로젝트를 시작하면서 가장 먼저 고민한 것은 기능이 아니라 구조였다.백엔드 개발을 하다 보면 프로젝트가 커질수록 코드가 점점 복잡해지고, 유지보수가 어려워지는 문제를 자주 겪게 된다. 특히 Spring 기반 프로젝트에서는 Controller, Service, Repository 3-tier Layerd구조만으로는 이해하기 어렵고 이만 안 다하더라고 한계가 계속 드러났다. 관심이 생겨 공부하고 도입해보자한 설계안은- DDD(Domain Driven Deging)- Hexagonal Architecture이다. DDD (Domain Driven Design) - 도메인 주도 설계DDD는 구조가 아니라 내부 설계 방식이다. DDD를 처음 접하게 된 이유는 도메인 중심으로 시스템을 설계하는 것인데 AI ..

article thumbnail
[Kotlin] 코틀린 함수형 프로그래밍에 대한 생각
코딩/Kotlin 코틀린 2026. 2. 6. 18:53

코틀린 함수형 프로그래밍이란코틀린을 공부하다 보면 마주치는 개념이 함수형 프로그래밍이다.특히 map, filter, reduce, lambda, 고차 함수 같은 키워드는 코틀린을 어느 정도 사용하거나 공부하면 마주친 적이 있을 것이다. '함수를 값처럼 다루고, 상태 변경을 최소화하는 방식'을 말하는데코틀린은 순수 함수형 언어는 아니지만, 객체지향 + 함수형을 자연스럽게 섞을 수 있는 언어라서 실무에서 활용도가 매우 높은 걸로 알고 있다. 함수형 코딩을 사용하는 본질적인 이유는이 코드가 무엇을 바꾸는지 하눈에 알기 위해 쓰는 방식이라 생각한다. 객체지향 중심 코드의 무서운 점은 상태가 숨어있다는 점이다예시로data class Order( var items: MutableList, var stat..

article thumbnail
Spring @Transactional 롤백 안 되는 이유? Try-Catch 사용하며 놓친 경험
Back End/Spring 2025. 5. 26. 18:52

Spring Boot와 kotlin을 사용하는 개발자들이 @Transactional 어노테이션을 통해 데이터베이스 트랜잭션을 관리합니다.저도 위와 같은 개발 스택으로 개발을 하고있는데...분명히 예외가 발생했는데도 데이터가 롤백되지 않는 경우를 겪었습니다. "아니 @Transactional 달았고 예외도 났는데 왜 DB에 저장된거지..." 제가 놓친 부분에 대해, try-catch 블록이 롤백을 방했던 경험을 정리했습니다. 기본적으로 예외 발생 시 롤백된다.unchecked exception (RuntimeException 등) 이 발생하고,그 예외가 메서드 바깥으로 전파될 때예시로@Transactionalfun createUser(name: String?) { if (name == null) t..

article thumbnail
[Kotlin] isNullOrEmpty() vs isNullOrBlank() 차이와 사용법
코딩/Kotlin 코틀린 2025. 5. 21. 22:27

Kotiln에서는 문자열 처리 시 null 안정성을 확보하기 위해 여러 편리한 확장 함수들을 제공합니다.그중 자주 사용되는 함수는 isNullOrEmpty()와 isNullOrBlank()입니다.두 함수는 문자열이 null인지, 비어있는지 판단할 때 사용하지만, 미묘한 차이가 있어서 구분해서 사용하는 게 좋습니다. 결론 요약값이 없거나 빈 문자열만 체크 → isNullOrEmpty()값이 없거나 빈 문자열 또는 공백만 체크 → isNullOrBlank() isNullOrEmpty()문자열이 null이거나 길이가 0인 경우에 true를 반환합니다.문자열이 아예 없거나 빈 문자열("") 일 때만 true 가 되는 함수입니다. val str1: String? = nullval str2: String? = ..

article thumbnail
JPA 지연로딩 (Lazy Loading)과 N+1 문제 정리 - fetchJoin, DTO활용
Back End/Spring 2025. 4. 9. 21:21

JPA의 관심이 세계적으로 뜨거워지면서 많은 사람들이 공부하고 많은 조직이 JPA를 도입하고 있습니다. JPA 지연로딩에 대해 많은 사람들이 강조하는데 나름 이해하고 공부한 내용을 정리해 보았습니다. 지연 로딩이란?JPA는 엔티티(Entity) 간의 연관 관계를 자동으로 매핑해 주는 편리한 기능을 제공합니다.이때 성능을 위해 fetch 전략을 설정하게 되는데, 가장 대표적인 것이 '지연 로딩(Lazy Loading)'입니다. 지연 로딩은 데이터를 실제로 사용할 때까지 SQL 쿼리를 실행하지 않는 방식입니다. 예를 들어,@Entityclass Member( @Id @GeneratedValue val id: Long? = null, val name: String, @ManyToOne(fetc..

728x90
반응형