본문 바로가기

Spring45

Spring ArgumentResolver Spring ArgumentResolver 1. Servlet HTTP 요청 시 WAS는 Request, Response 객체를 새로 생성하고, 서블릿 객체를 호출한다. [Servlet 생성] 개발자는 Request 객체에서 HTTP 요청 정보를 사용하고 Response 객체에 HTTP 응답 정보를 입력한다. 서블릿이 종료되면 WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다. 즉, 생성된 Request, Response 객체를 받아 하나의 스레드에서 서블릿 객체가 실행되면, 그 시점부터 개발자는 Request의 정보를 사용해 Response에 적절한 응답을 담아 서블릿을 종료하는 것으로 요청을 처리할 수 있다. ※ 서블릿 컨테이너는 서블릿을 지원하는 WAS를 뜻한다. 2... 2022. 8. 19.
#10 객체지향 쿼리 언어 객체지향 쿼리 언어 JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원한다. JPA에서 사용할 수 있는 쿼리 기술은 다음과 같다. ● JPQL ● Criteria ● QureyDSL ● 네이티브 SQL JPQL은 가장 중요한 객체지향 쿼리 언어다. Critera나 QureyDSL은 결국 JPQL을 편리하게 사용하도록 도와주는 기술이므로 JPQL 학습은 필수적이다. 1. JPQL 소개 JPQL의 특징은 다음과 같다. ● JPQL은 객체지향 쿼리 언어다. ◎ 따라서 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. ● JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. ● JPQL은 결국 SQL로 변환된다. JPQL의 기.. 2021. 9. 1.
#9 값 타입 값 타입 JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다. 값 타입은 다음 3가지로 나눌 수 있다. ● 기본값 타입(basic value type) ◎ 자바 기본 타입(int, double 등) ◎ 래퍼 클래스(Integer 등) ● 임베디드 타입(embedded type) ● 컬렉션 값 타입(collection value type) 1. 값 타입 ■ 값 타입의 특징 기본 값 등을 포함한 값 타입의 특징은 다음과 같다. ● 값 타입은 결국 엔티티에 생명주기를 의존한다. ex) Member라는 엔티티가 id, .. 2021. 8. 30.
#8 프록시와 연관관계 관리 프록시와 연관관계 관리 ● 프록시와 즉시 로딩, 지연 로딩 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. ● 영속성 전이와 고아 객체 JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수 있는 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. 1. 프록시 [Member와 Team] 위 예제와 같이 Member가 Team을 필드로 갖고 있다고 하자. 만약 Member를 데이터 베이스에서 조회하면 이때, Te.. 2021. 8. 29.