study/spring
-
[SPRING] JPA의 영속성 컨텍스트study/spring 2020. 8. 30. 15:27
영속성 관리에서 가장 중요한 것은 2가지이다. 객체와 관계형 데이터베이스간의 매핑 영속성 컨텍스트 ( JPA 내부 동작 ) EntityManagerFactory와 EntityManager 클라이언트의 요청이 올때 마다 ( 즉, thread가 하나씩 생성될 때마다 ) EntityManager를 생성한다. EntityManager는 내부적으로 DB 커넥션 풀을 사용해서 DB에 접근한다. EntityManagerFactory JPA는 EntityManagerFactory를 만들어야 한다. 애플리케이션이 로딩되는 시점에 DB당 딱 하나만 생성해야 한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("emf"); 그리고 WAS가 종료되는 시..
-
[SPRING] @SpringBootApplicationstudy/spring 2020. 8. 29. 23:04
스프링부트를 사용해서 백엔드 개발을 공부하고 있었지만 정작 내가 직접 구현하지 않는 부분에 대해서는 파악하지 못하고 있다는 것을 느꼈다. 그 부분들을 찾아서 정리해나가려고 한다. 그 첫 번째는 @SpringBootApplication 이다. @SpringBootApplication 스프링 부트 프로젝트를 만들면 자동으로 생성되는 애플리케이션 클래스에 선언되어 있는 어노테이션이다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @SpringBootApplication을 찾아들어가보면 @Target(E..
-
[SPRING] Spring Batch Chunk 지향처리study/spring 2020. 8. 21. 22:03
Chunk Spring Batch에서의 Chunk란 데이터 덩어리로 작업을 할 때 각 커밋 사이에서 처리되는 row의 수를 말한다. 즉, Chunk 지향 처리란 한 번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만든 후 Chunk 단위로 트랜잭션을 다루는 것을 의미한다. 여기서 트랜잭션이라는 것은 Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우 해당 Chunk 만큼만 롤백이 되고 이전에 커밋된 트랜잭션 범위까지는 반영이 된다는 것이다. 위의 이미지로 확인할 수 있는 순서는 아래와 같다 1. Reader를 통해 데이터를 하나 읽어온다. 2. 읽어온 데이터를 Processor에서 가공한다. 3. 가공된 데이터들을 별도의 공간에 모은 후 Chunk 단위만큼 쌓이게 되면 Writer에 전달하고 Wr..
-
[SPRING] DispatcherServletstudy/spring 2020. 8. 4. 23:53
DispatcherServlet : 서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에 둬서 중앙 집중식으로 처리해주는 프론트 컨트롤러 클라이언트로부터 요청이 들어오면 Tomcat 같은 서블릿 컨테이너가 요청을 받는데 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러 장점 web.xml의 역할을 축소시켰다. default / jsp *.jsp jsp *.jspx 기존엔 위처럼 모든 서블릿에 대해서 URL 매핑을 위해 반드시 web.xml에 등록해야 했지만 dispatcher org.springframework.web.servlet.DispatcherServlet 1 dispatcher / 으로 DispatcherServlet을 등록해주어 ..
-
[SPRING] Reqeust 흐름과 WASstudy/spring 2020. 7. 26. 22:36
Client(Browser) - WebServer(Apache) - WAS(Tomcat) - Servlet(ServletDispatcher) - DI Container - Controller Web Server ( Apache, nginx ) 흔히 웹 서버라고 하면 웹 애플리케이션이 설치되어 웹 서비스를 제공하는 서버라고 생각한다. 큰 의미로는 맞는 말이지만, 좁은 의미로 사용한다면 정적 컨텐츠를 제공하는 것이 웹 서버이다. 사용자가 웹 서버로 요청을 보내면 먼저 웹 서버가 요청을 보고 동적 컨텐츠를 제공해야한다면 WAS로 보내고, 정적 컨텐츠(.html, .css 등 변화가 없는 파일)로 제공해야한다면 웹 서버에서 직접 응답한다. 웹 서버가 필요한 이유는 웹 서버에서 정적인 콘텐츠만을 처리하도록 기능을..
-
[SPRING] Spring vs. Spring bootstudy/spring 2020. 7. 23. 16:44
Spring이란? Spring이란 과거 EJB를 대체하는 framework로써 세상에 나왔다. "spring은 설정이 반이다"라는 말이 있을 정도로 설정하는 것에 있어서 어려움이 많았으나 - 경량 컨테이너 - IoC ( Inversion of Control : 제어의 역행 ) - DI ( Dependency Injection : 의존성 주입 ) - AOP ( Aspect-Oriented Programming : 관점 지향 프로그래밍 ) 위 네가지의 강력한 장점을 지니고 있기 때문에 대표적인 Java Framework로 자리잡았다. 거기에 스프링의 단점을 해결하고자 만들어진 것이 바로 Spring Boot다. Spring Boot는 환경 설정을 최소화해주어서 개발자가 비즈니스 로직에 집중할 수 있도록 하여..
-
[SPRING] 스프링의 정의 / 특징 / 동작 원리study/spring 2020. 7. 21. 19:36
스프링 프레임워크란? 자바 엔터프라이즈 개발을 편하게 해주는 경량급 오픈 소스 애플리케이션 프레임워크 Lightweight Java Application Framework POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 하기 위해 사용한다. 일반적인 프레임워크의 경우 과도한 엔지니어링 기술을 탑재하여 무겁고 고가의 WAS를 갖추어야만 동작했지만 스프링 프레임워크는 엔터프라이즈 개발에서 필요로 하는 기술을 포함하고 있지만 가볍고 단순히 환경에서 사용할 수 있다. 애플리케이션 프레임워크 소프트웨어 개발자가 응용 소트프웨어의 표준 구조를 구현하기 위해 사용하는 소프트웨어 프레임워크로 구성 즉, 프로그래밍에서 특정 OS를 위한 응용 프로그램 표준 구조를 구현하는 클래스..
-
[SPRING] JPA의 이해-3(ORM)study/spring 2019. 12. 27. 20:52
앞서 두 개의 글에서 객체 지향 프로그래밍과 관계형 데이터베이스에 대해서 정리를 했다. 2019/12/27 - [study/spring] - [SPRING] JPA의 이해-1(관계형 데이터베이스) 2019/12/27 - [study/spring] - [SPRING] JPA의 이해-2(객체지향 프로그래밍) 그 둘을 보면 참 다르다란 생각이 든다. 관계형 데이터베이스는 하나의 외래키만으로 참조하고 있는 테이블들의 데이터를 조회할 수가 있었는데 객체지향 프로그래밍은 클래스 내에 필드로 지정을 해야만 조회를 할 수 있었다. 그렇다고 외래키를 직접 정수형 혹은 문자형 타입으로 필드에 지정해놓기에는 객체지향으로써의 이점을 전혀 살리지 못한다. 테이블의 조인을 클래스에서 이용할 수 없고 클래스의 상속을 테이블에서 이..