본문 바로가기
반응형

Spring91

OSIV 개요 JPA는 구현체를 Hibernate로 가지고 있습니다. QueryDsl 등을 통해서 쿼리문을 만드는 등 여러 추상화 기술을 이용하고 있기 때문에, 성능 상 조심해야 하는 점들이 있습니다. 그 중에 오늘은 OSIV에 대해 알아보겠습니다. 평소에 별로 고려하지 않았던 부분인데 실시간 서비스에서는 성능 상 이슈는 낼 수 있다는 것을 알고 공부하게 됐습니다. OSIV란? OSIV는 Open Session In View 의 약자로, 직역하면 View에서도 계속 Session이 Open 되어 있다는 뜻입니다. 즉, 사용자에게 보여지는 화면에서도 세션이 계속 유지됩니다. 비록 트랜잭션이 끝나도 말입니다. 트랜잭션에 관해서는 아래에서 설명하겠습니다. OSIV을 잘 이해하기 위해서 요청이 들어온 상황을 가정해보겠습.. 2022. 10. 1.
트랜잭션의 역사 개요 스프링에서 당연하게 사용해오는 기술인 @Transactional의 역사를 알아보겠습니다. 스프링에서 트랜잭션의 사용 방법 및 스프링의 추상화 전략을 살펴보면서 개발자가 핵심 개발에만 집중 할 수 있게 된 배경을 알아보겠습니다.. 본 글은 김영한 님의 강의를 바탕으로 작성했습니다 데이터베이스 세션 데이터베이스에서 커넥션을 얻기 위해서 데이터베이스 서버는 내부에서 세션을 이용합니다. 세션은 트랜잭션을 시작하고 커밋 또는 롤백을 통해서 트랜잭션을 종료합니다. 즉, 개발자가 SQL을 전달하면, 커넥션에 연결되어 있는 세션이 SQL을 실행합니다. 트랜잭션이 없는 롤백 롤백은 취소, 복구와도 같은 의미로 롤백이 발생하는 원인은 다양하며, 보통 예외가 발생했을 때 롤백 처리를 합니다. 비지니스 로직을 짜면서 데.. 2022. 9. 4.
@Controller @RestContrller @Controller, @RestController Spring MVC에서 @RestContrller 어노테이션은 @Controller에 @ResponseBody가 추가된 형태입니다. 스프링 4.0 버전에 등장했으며, RESTful 웹 서비스를 개발하기 위해서 만들어졌습니다. 일반적인 웹 어플리케이션은 HTML + CSS + JavaScript의 조합으로 화면을 구성하지만, REST API는 JSON 혹은 XML 형태로 데이터를 반환합니다. @Controller의 역할은 Map 형태의 모델 객체를 만들고 뷰를 찾는 것이고, @RestController는 단순하게 객체를 반환하고, 객체 데이터는 직접적으로 JSON 혹은 XML 형태로 HTTP 응답에 직접 기록됩니다. Controller는 적절한 view를.. 2022. 8. 25.
@Controller, @Service, @Repository 차이 개요 스프링을 사용하면서 아마 가장 처음 접했던 것이 @Controller, @Service, @Repository였다. 이 어노테이션들을 무의식적으로 사용했는데, 각 차이점은 있을까? 있다면 어떤 것일까? 알아보도록 해보겠습니다. @Component @Controller, @Service, @Repository의 공통점, 차이점을 비교하기 이전에 먼저 @Component를 알아야 합니다. 스프링은 과거 XML에만 빈 정의가 가능했지만, 스프링 2.5버전부터는 어노테이션을 이용한 의존성 주입이 가능해졌습니다. @Component 가 사용된 클래스들은 스프링 빈으로 등록되고 자동으로 빈 탐색의 대상입니다 @Controller, @Service, @Repository 공통점은 @Controller, @Ser.. 2022. 8. 25.
생성자 vs setter vs field 의존성 주입 개요 DI를 하는 방법은 생성자 주입과 setter 주입이 있습니다. 2개를 코드로 비교하게 된 계기는, 스프링 공식문서에서 순화참조를 해결하기 위해서는 setter 주입을 사용하라고 했던 내용입니다. 생성자 주입이 훨씬 좋다고 평가되는데, 왜 setter 주입을 사용해서 해결하라고 했을까요? 실제 코드를 통해서 의존성 주입 방식에 따라 빈이 어떤순서로 생성되는지 비교해보겠습니다. 주입 방식에 따른 호출 순서 setter주입, 필드 주입, 생성자 주입에 따라서 매개변수가 있는 생성자, 매개변수가 없는 생성자, setter 함수 등이 어떤 순서로 실행된는지 알아보겠습니다. @Component로는 DogsDao, DogsService, DogsController 총 3개를 사용하겠습니다. setter 주입 .. 2022. 7. 15.
DI(Dependency Injection) 개요 IoC is also known as dependency injection (DI) 스프링 공식 문서에서는 IoC 개념과 DI개념의 설명이 일치하는 부분이 많습니다. 2개는 사실상 같은 원리로 작동하기 때문이며 다른 분들이 동의어로 사용하는 경우도 많습니다. 구체적으로 비교하면 차이가 있는데, 스프링 공식 문서를 중심으로 DI를 알아보려고 합니다. DI란? DI는 의존성 주입이라는 뜻으로, 개념적 정의 설명 이전에 먼저 코드로 "의존성이 있다"는 것이 어떤 의미인지 확인해보겠습니다. 사전을 찾아보니 다음과 같습니다. 영어사전을 보면, 불필요할 정도의 종속을 말하기도 합니다. 한국어를 보면, 다른 것에 의지하여 존재하는 것입니다. 즉, 혼자서는 독립적으로 존재하지 못하고 다른 요소에 도움을 받아야만 .. 2022. 7. 14.
DispatcherServlet & ContextLoaderListener * 개요 서블릿을 먼저 공부하고, 스프링 구조를 공부하면서, DispatcherServlet이 중요한 역할을 한다는 것을 알게되었습니다. 이 서블릿 덕분에 클라이언트의 요청을 스프링이 처리할 수 있으므로 그 동작과정과 작동원리가 궁금했습니다. 또한 이와 관련하여 WebApplicationContext와 ContetLoaderListener도 함께 공부했습니다. Web Application에는 1개의 ServletContext가 있습니다. 여기에는 여러 자원들의 공유자원들이 있습니다. WebApplicationContext는 ServletContext 안에 만들어 집니다. ContextLoadListener는 Root WebApplicationContext에 여러 자바 빈들을 적재합니다. 주로 Servic.. 2022. 7. 12.
Servlet * 개요 웹 자바 프로그래밍을 접하면, Servlet의 개념이 가장 기초가 됩니다. Servlet 자체가 웹 어플리케이션을 만들기 위해서 나온 기술이기 때문입니다. 하지만, 제대로 개념을 정리하거나 명쾌하게 답할 수가 없었습니다. 이 글을 통해서 개념을 정리해보겠습니다. * Servlet 소개 Servlet은 문맥에 따라서 여러 의미를 가집니다. - 웹 어플리케이션을 만들기 위해 Http 요청, 응답을 지원하는 기술입니다. - 동적 웹 페이지를 만들기 위해서 서버에 배포되는 컴포넌트입니다. - Web Application Context(WAS)(tomcat, jeus, weblogic)에서 기동되는 자바 클래스입니다. 참고로, WAS는 서블릿을 관리하기 위해 서블릿 컨테이너를 가지고 있습니다. - 각종 .. 2022. 7. 11.
ApplicationContext 개요 개인프로젝트를 진행하면서, ApplicationContext로 직접 빈을 호출하여 사용한 부분이 있었습니다. 스프링 컨테이너를 관리하는 중요한 인터페이스이다 보니, 스프링 IoC 컨테이너와 스프링 빈도 관련된 내용을 정리했습니다. Application & BeanFactory The org.springframework.beans and org.springframework.context packages are the basis for Spring Framework’s IoC container. The BeanFactory interface provides an advanced configuration mechanism capable of managing any type of object. Applic.. 2022. 7. 8.
반응형