Spring 90

[자바 ORM 표준 JPA 프로그래밍] 3. 영속성 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 3. 영속성 관리영속성 컨텍스트엔티티를 관리하는 환경입니다. 엔티티 생명주기new / transient (비영속)엔티티 객체를 생성한 시점의 상태입니다.영속성 컨텍스트와 전혀 연관이 없습니다. managed (영속)영속성 컨텍스트에 저장된 상태입니다. detached (준영속)영속성 컨텍스트에 저장되었다가 분리된 상태입니다.영속성 컨텍스트에서 삭제됨: 1차 캐시, 해당 엔티티 관련 쿼리 (내부 쿼리 저장소) removed (삭제)엔티티 객체가 삭제된 상태입니다. (데이터베이스에 삭제될 예정)준영속 상태의 엔티티가 대상입니다. (비영속 -> 영속 -> 준영속 -> 삭제) 상태 메서드find(): 엔티티 조회Member memb..

[자바 ORM 표준 JPA 프로그래밍] 2. JPA 시작

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 2. JPA 시작애플리케이션 개발public class JpaMain { public static void main(String[] args) { // 엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); EntityManager em = emf.createEntityManager(); // 엔티티 매니저 생성 EntityTransaction tx = em.getTransaction(); // 트랜잭션 기능 획득 try { ..

[자바 ORM 표준 JPA 프로그래밍] 1. JPA 소개

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. SQL을 직접 다룰 때 발생하는 문제점Repetitionsteps for developing an sql mapper// JDBC 연결 정보String url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";// 데이터베이스 연결 및 쿼리 실행try (Connection connection = DriverManager.getConnection(url, username, password)) { String sql = "SELECT id, name, email FROM users WHERE id..

[Spring Data JPA] 2-2. Transactionality

1. 기본 트랜잭션 설정CrudRepository 메서드SimpleJpaRepository로부터 트랜잭션 설정을 상속받습니다.읽기 작업의 경우, 트랜잭션 설정의 readOnly 플래그는 true로 설정됩니다.그 외의 모든 작업은 @Transactional로 설정됩니다. (기본 트랜잭션 설정이 적용되도록) 2. 트랜잭션 설정 커스터마이징특정 저장소 메서드의 트랜잭션 설정 조정Method Override (+@Transactional 설정)findAll() 메서드는 10초의 타임아웃을 갖고 readOnly 플래그 없이 실행됩니다.public interface UserRepository extends CrudRepository { @Override @Transactional(timeout = 10) pu..

[Spring Data JPA] 1. Core concepts

1. Repository 인터페이스@Indexedpublic interface Repository { }Spring Data의 중심 인터페이스입니다. 마커 인터페이스타입 정보 포착 및 식별에 활용 (구체적 메서드 X)확장 인터페이스 식별 및 추적 Spring Data JPA 와의 연계Spring Data JPA는 Repository 인터페이스를 인식하여, 개발자가 필요로 하는 CRUD 작업의 구현체를 자동으로 제공합니다. 타입 인자T: 도메인 클래스ID: 도메인 클래스의 식별자 타입 2. CrudRepository와 ListCrudRepository 인터페이스관리되는 엔터티 클래스에 대해 고급 CRUD 기능을 제공합니다.개발자는 이 인터페이스를 확장함으로써 엔터티에 대한 기본 CRUD 작업을 쉽게 수행할..

[Spring MVC] 2-4. Handler Methods: Controller Advice

1. Controller Advice 특정 컨트롤러나 전체 컨트롤러에 걸쳐 로직을 중앙화하는데 사용되는 어노테이션입니다. 예외 처리, 바인딩 설정, 모델 어트리뷰트 설정 등에 사용됩니다. @ExceptionHandler, @InitBinder, @ModelAttribute 적용 범위 기본적으로 해당 메서드가 선언된 @Controller 내에서만 적용됩니다. @ControllerAdvice나 @RestControllerAdvice 클래스 내에서 선언된 경우, 어느 컨트롤러에서든 적용될 수 있습니다. 빈 등록 @ControllerAdvice @ComponentScan 메타-어노테이션되어 있습니다. 컴포넌트 스캔을 통해 스프링 빈으로 등록될 수 있습니다. @RestControllerAdvice @Control..

Spring/Spring MVC 2023.10.17

[Spring MVC] 2-3. Handler Methods: DataBinder

1. @InitBinder WebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다. 컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다. WebDataBinder 스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다. 설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다. 기능 문자열 기반 요청 값 변환 문자열 기반 요청 값을 컨트롤러 메서드의 타겟 타입으로 변환합니다. 요청 파라미터, 경로 변수, 헤더, 쿠키 등 요청 파라미터 바인딩 클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩합니다. 모델 객체 값 포맷팅 HTML 폼을 렌더링 할 때 모델 객체 값을 문자열로 포맷합니다. 2. PropertyEdit..

Spring/Spring MVC 2023.10.17

[Spring MVC] 2-2. Handler Methods: Type Conversion

1. Type Conversion String-based Request Input 어노테이션이 붙은 컨트롤러 메서드 인수들은 대개 문자열 기반의 요청 입력을 나타냅니다. Type Conversion 인수가 String 이외의 다른 것으로 선언되었을 경우 타입 변환이 필요할 수 있습니다. 이러한 변환은 구성된 컨버터를 기반으로 자동으로 적용됩니다. 2. Convertion Types Default Supported Types 기본적으로, int, long, Date 등의 단순한 타입들이 지원됩니다. Customizing Type Conversion 타입 변환을 사용자 정의하려면 WebDataBinder를 통해 할 수 있습니다. 또는 FormattingConversionService에 Formatter를 등..

Spring/Spring MVC 2023.10.17

[Spring MVC] 2-1. Handler Methods: Method Arguments

Method Arguments Spring MVC에서 지원하는 handler method의 argument 입니다. Class WebRequest, NativeWebRequest 직접 Servlet API를 사용하지 않고 요청 매개변수 및 요청 및 세션 속성에 액세스할 수 있습니다. jakarta.servlet.ServletRequest jakarta.servlet.ServletResponse 웹 요청과 응답에 대한 기본 인터페이스입니다. 다양한 요청 및 응답 유형에 대한 액세스를 제공합니다. HttpServletRequest와 같은 구체적인 서블릿 요청 유형으로 캐스팅될 수 있습니다. (ServletRequest, HttpServletRequest) (Spring’s MultipartRequest, M..

Spring/Spring MVC 2023.10.17