엔티티 생명주기 알아보기

엔티티 생명주기 JPA(Java Persistence API)에서 엔티티의 생명주기는 엔티티가 생성되고 소멸할 때까지의 과정을 의미한다. 엔티티 생명주기의 4가지 상태 비영속(new/transient): 새로운 엔티티가 생성되었지만, 아직 EntityManager에 의해 관리되지 않은 상태이다. 데이터베이스에 저장되지 않은 상태이며, 영속성 컨텍스트에 관리되지 않는다. new 키워드로 생성된 엔티티는 비영속 상태이다. 영속(managed): EntityManager에 의해 관리되는 상태로, 영속성 컨텍스트에 저장된 상태이다. 엔티티는 데이터베이스와 동기화되어 있으며, 영속성 컨텍스트에 의해 관리된다. persist() 메서드를 사용하여 엔티티를 영속 상태로 만들 수 있다. 준영속(detached): 영속성 컨텍스트에 의해 관리되지 않는 상태이다. 영속 상태에서 분리된 상태로, 영속성 컨텍스트에 의해 관리되지 않는다. detach() 메서드를 사용하여 엔티티를 준영속 상태로 만들 수 있다. 삭제(removed): ...

6월 8, 2024 · 1 분 · 137 단어 · In-Jun Hwang

디스패처 서블릿(Dispatcher Servlet) 알아보기

디스패처 서블릿이란? 디스패처 서블릿은 스프링 MVC의 핵심이다. 클라이언트의 요청을 전달받아 적절한 컨트롤러로 요청을 전달하고, 컨트롤러가 반환한 결과를 View로 전달하는 역할을 한다. 디스패처 서블릿은 웹 애플리케이션에서 하나만 존재하며, 클라이언트의 모든 요청을 처리한다. 디스패처 서블릿의 동작 과정 클라이언트의 요청을 전달받는다. Handler Mapping을 통해 클라이언트의 요청을 처리할 컨트롤러를 찾는다. Handler Adapter를 통해 컨트롤러를 실행한다. 컨트롤러가 반환한 결과를 View Resolver를 통해 View로 변환한다. View를 클라이언트에게 전달한다. RestController를 사용할 경우 View Resolver를 사용하지 않는다. 대신에 객체를 JSON 형태로 변환하여 클라이언트에게 전달한다. ...

6월 5, 2024 · 2 분 · 318 단어 · In-Jun Hwang

스프링 인터셉터란 무엇인가?

스프링 인터셉터 인터셉터는 서블릿 필터와 비슷한 역할을 한다. 서블릿 필터는 서블릿 컨테이너에서 요청이 들어오기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 스프링 인터셉터는 스프링 MVC에서 컨트롤러에 요청이 들어가기 전, 후에 요청을 가로채어 처리할 수 있는 기능을 제공한다. 인터셉터는 HandlerInterceptor 인터페이스를 구현하여 사용한다. HandlerInterceptor 인터페이스는 세 가지 메소드를 제공한다. preHandle : 컨트롤러에 요청이 들어가기 전에 실행되는 메소드 postHandle : 컨트롤러에 요청이 들어간 후, 뷰가 렌더링 되기 전에 실행되는 메소드 afterCompletion : 뷰가 렌더링 된 후에 실행되는 메소드 인터셉터 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 컨트롤러에 요청이 들어가기 전에 실행되는 코드 // 만약 false를 반환하면 컨트롤러에 요청이 들어가지 않음 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 컨트롤러가 정상적으로 실행된 이후에 실행되는 코드 // 예외가 발생하면 실행되지 않음 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 뷰가 클라이언트에 응답을 보낸 후에 실행되는 코드 // 예외가 발생한다면 Exception 객체를 통해 예외 정보를 확인할 수 있음 // 예외 정보를 확인해서 로깅할 수 있음 } } 인터셉터 등록 인터셉터를 등록하기 위해서는 WebMvcConfigurer 인터페이스를 구현하여 addInterceptors 메소드를 오버라이딩한다. ...

6월 4, 2024 · 3 분 · 478 단어 · In-Jun Hwang

서블릿 filter란 무엇인가?

서블릿은 클라이언트의 요청을 처리하는 자바 클래스이다. 서블릿은 HTTP 요청을 처리하고, HTTP 응답을 생성하는 데 사용된다. 서블릿 필터란? 서블릿 필터는 서블릿 컨테이너에서 서블릿이 요청을 처리하기 전이나 응답을 보내기 전에 요청이나 응답을 수정할 수 있는 기능을 제공한다. 요청이나 응답을 수정하는 이유가 무엇일까? 다음과 같은 이유로 요청이나 응답을 수정한다. 인증: 사용자가 로그인했는지 확인 로깅: 요청과 응답을 로깅 암호화: 요청과 응답을 암호화 헤더 추가: 요청이나 응답에 헤더 추가 이미지 변환: 이미지 요청을 다른 형식으로 변환 데이터 압축: 요청이나 응답을 압축 사용자 정의 인셉션 처리: 예외 발생 시 사용자 정의 인셉션 처리 이러한 기능을 필터로 사용하여 구현할 수 있다. ...

6월 4, 2024 · 4 분 · 687 단어 · In-Jun Hwang

Spring Boot 개발 가이드: 컴포넌트별 개발 순서와 베스트 프랙티스

Spring Boot 애플리케이션의 핵심 컴포넌트 Spring Boot 애플리케이션 개발 시 주요 컴포넌트들과 그 역할을 살펴보겠습니다. 1. Entity (엔티티) 데이터베이스 테이블과 매핑되는 객체입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String username; @Column(nullable = false) private String email; // getter, setter, constructor } 2. Repository (리포지토리) 데이터베이스 연산을 담당하는 인터페이스입니다. ...

5월 25, 2024 · 3 분 · 461 단어 · In-Jun Hwang