[Spring][JPA] 스프링 데이터 JPA Auditing 심화편
·
Dev Framework/Spring
🚀 Spring Data JPA Auditing 심화편– 현업에서는 이렇게까지 활용합니다 1. 실전 예제: createdBy, updatedBy를 로그인 사용자로 자동 세팅하기AuditorAware를 구현할 때, 보통 로그인 사용자 정보를 가져와야 합니다.스프링 시큐리티를 쓰는 경우 이렇게 작성합니다.import org.springframework.data.domain.AuditorAware;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.stereotype.Component;i..
[Spring][JPA] 스프링 데이터 JPA Auditing 완전 정복
·
Dev Framework/Spring
🌟 스프링 데이터 JPA Auditing 완전 정복– 데이터의 생성과 변경을 자동으로 기록하는 가장 깔끔한 방법 1. Auditing이란 무엇인가?Auditing(감사, 기록)은 쉽게 말하면,"이 데이터가 언제 생성되었는지, 언제 수정되었는지, 누가 수정했는지를 자동으로 기록하는 기능"입니다.우리가 실제 서비스를 운영하다 보면, 거의 대부분의 테이블에 이런 칼럼들이 존재합니다.칼럼명의미created_at데이터가 처음 생성된 시간updated_at데이터가 마지막으로 수정된 시간created_by데이터를 처음 만든 사용자updated_by마지막으로 데이터를 수정한 사용자처음에는 직접 setCreatedAt() 하면서 채우겠지만,규모가 커지면 매번 이런 코드를 반복하는 것은 비효율적이고, 오타, 실수도 잦아..
[Spring][JPA] Hibernate에서 FROM 절 서브쿼리를 만들 수 없는 이유
·
Dev Framework/Spring
Hibernate에서 FROM 절 서브쿼리를 만들 수 없는 이유"어? SQL에서는 FROM 절 안에 서브쿼리를 넣을 수 있는데, Hibernate는 왜 안 될까?"JPA를 처음 배우다 보면 누구나 한 번쯤 이런 의문을 품게 됩니다.오늘은 이 질문을 정확하게, 그리고 실전 관점에서 풀어보겠습니다. JPA와 Hibernate, 그리고 JPQL우선 출발점부터 바로잡아야 합니다.Hibernate는 JPA의 대표적인 구현체입니다.그리고 JPA에서는 데이터베이스를 직접 다루지 않고,JPQL이라는 "객체지향 쿼리 언어"를 사용합니다.SQL은 테이블을 대상으로 쿼리합니다.JPQL은 엔티티 객체를 대상으로 쿼리합니다.이게 둘의 본질적인 차이입니다. JPQL은 FROM 절 서브쿼리를 허용하지 않는다문제는 여기서 발생합니다..
[Spring] 트랜잭션 예외에 따른 커밋(Commit)과 롤백(Rollback)
·
Dev Framework/Spring
예외와 트랜잭션 커밋, 롤백트랜잭션에서 예외가 발생하면 항상 롤백될까요?우리는 흔히 try-catch 블록 안에서 데이터베이스 작업을 수행하고, 예외가 발생하면 롤백되겠지… 하고 생각합니다. 하지만 Spring에서는 반드시 그렇지 않습니다. 체크 예외는 롤백되지 않는다?Spring의 트랜잭션 처리 기본 정책은 다음과 같습니다:Unchecked 예외 (RuntimeException, Error 등) → 자동 롤백Checked 예외 (Exception 상속, RuntimeException 제외) → 자동 롤백 X즉, 개발자가 명시적으로 롤백을 선언하지 않으면, SQLException 같은 예외가 발생해도 트랜잭션이 커밋될 수 있습니다.@Transactionalpublic void saveData() thro..
[Spring] MessageConverter
·
Dev Framework/Spring
HTTP 메시지 컨버터란?HTTP 메시지 컨버터는 뷰 템플릿 없이, JSON 같은 데이터를 HTTP 바디에 직접 읽고 쓰고자 할 때 사용하는 도구입니다. 언제 사용되나요?@RequestBody, @ResponseBodyHttpEntity, RequestEntity, ResponseEntity등을 사용할 때 스프링 MVC가 자동으로 메시지 컨버터를 적용합니다. @ResponseBody 사용 원리 @ResponseBody 를 사용할 경우HTTP의 BODY에 문자 내용을 직접 반환viewResolver 대신에 HttpMessageConverter가 동작기본 문자처리: StringHttpMessageConverter기본 객체처리: MappingJackson2HttpMessageConverterbyte 처리 등등..
[Spring] @Configuration과 CGLIB 프록시 마법
·
Dev Framework/Spring
@Configuration@Configuration은 단순히 설정 클래스를 나타내는 게 아니라, Spring이 내부에서 CGLIB 프록시를 적용할 수 있도록 의도적으로 명시하는 어노테이션입니다. 이 덕분에 Spring은 Java 코드로도 안전하게 싱글톤 빈을 구성할 수 있습니다. 읽기 전에 알아두면 좋은 점Spring은 기본적으로 모든 빈을 싱글톤으로 관리합니다.이를 통해 메모리 낭비를 줄이고, 같은 객체를 재사용함으로써 성능과 일관성을 확보할 수 있습니다.@Bean 메서드는 Spring 컨테이너에 객체를 등록하는 방법이지만, @Bean만으로는 메서드 간 호출 시 싱글톤 보장이 어렵습니다.@Configuration은 메서드 단위가 아니라 클래스 단위로 적용됩니다.@Configuration을 클래스에 붙여..
[Spring] HttpServlet 완벽 정리
·
Dev Framework/Spring
📘 HttpServlet 정리 - 요청/응답 방식과 한계웹 개발에서 HttpServlet은 클라이언트 요청을 처리하고, 적절한 응답을 돌려주는 기본적인 서블릿 기반 기술입니다. 이 문서에서는 요청 처리 방식(GET, POST, JSON)과 응답 방식(HTML, TEXT, JSON), 그리고 서블릿 방식의 한계점까지 정리합니다.  📥 요청 데이터 처리HTTP 요청 메시지를 개발자가 직접 파싱할 수도 있지만, 매우 불편하고 오류가 발생하기 쉽습니다. Servlet은 이를 대신 처리하여 HttpServletRequest 객체에 파싱된 정보를 담아 제공합니다. 1. 쿼리 파라미터 (GET 요청에서만 사용 가능)GET 방식에서는 URL에 ?key=value 형태로 데이터를 전송하며, HttpServletReq..
[Spring] 스프링 AOP - 1
·
Dev Framework/Spring
스프링 AOP(Aspect Oriented Programing)스프링의 핵심 철학 '비침투성'스프링은 EJB 같은 무거운 프레임워크가 주류이던 시절에 등장했습니다. 여기서 말하는 EJB는 Spring 이전에 주로 사용되던 자바 엔터프라이즈 애플리케이션 프레임워크입니다.그때의 프레임워크들은 다음과 같은 문제가 있었습니다.도메인 로직이 프레임워크 코드와 강하게 결합비즈니스 로직을 작성하려 해도, 상속 구조나 라이프사이클에 제약을 받아야 했음테스트하려면 컨테이너를 띄워야만 가능스프링 창시자인 Rod Johnson은 이 문제를 해결하고자 스프링을 설계하면서 이런 철학을 전면에 내세웠습니다."J2EE should not invade your domain model. Your domain model should b..
개발자 성현
'Dev Framework/Spring' 카테고리의 글 목록 (2 Page)