본문 바로가기

Back-End

(57)
영속성 관리 ( persistence ) JPA에서 제공해주는 기능은 크게 2가지이다.@Entity와 Table을 매핑하는 설계 부분매핑한 @Entity를 실제로 사용하는 부분 ( CRUD ) Spring Boot 프로젝트를 할 때 @Entity 어노테이션을 명시만 해봤는데, 이번 포스팅에서 EntityManager가 매핑한 Entity를 어떻게 사용하는지 살펴보자. Entity Manager와 Entity Manager FactoryEntity Manager Factory데이터베이스를 하나만 사용하는 애플리케이션에서는 하나의 Entity Manager Factory를 생성한다. 설정 정보는 META-INF/persistence.xml에서 읽어 온다.EntityManagerFactory emf = Persistence.createEntityMa..
Spring Boot 2.0 - 스프링 부트 기본 로깅 LoggingSpring boot의 소스는 기본으로 Commons Logging을 사용한다. 그리고 우리가 개발한 스프링 프로젝트는 기본으로 Logback을 사용한다. 다른 로깅툴을 사용해도 slf4j api로 라우팅 해주는 것이 포함되어 있어 다른 로킹 툴을 사용할 수 있다. 즉, logging dependency를 신경쓰지 않아도 된다. Log Format2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a...
서버 아키텍처 대부분의 프레임워크는 클라이언트에서 어떤 작업을 요청하면 각각 받은 요청을 별도의 Thread에서 처리하도록 구성되어 있다. (Worker-Thread Model) 한 번에 많은 요청을 하여도 처리가 가능하지만, 만약 동시에 처리할 수 있는 MAX개가 모두 돌고 있다면 아무런 작업이 불가능해진다. 대부분의 요청은 '단순 조회나 단순계산'인 경우가 많다. 즉 서비스 처리 시간모다 Thread Block상태인 것이다. 그래서 새로운 아키텍쳐가 나왔는데 Node에서 사용하고 있는 Event-driven Architecture이다. 일단 요청이 들어오면 single-thread에서 요청을 처리를 하고, DB I/O등 Synchronous한 작업은 Worker-Thread Model을 이용하여 처리한다. 이 때 ..
#6. AOP 6단원 공부하기 전에 AOP는 스프링을 공부하면서 IoC/DI, 서비스 추상화와 함께 나오는 스프링 3대 기술 중의 하나다. 항상 뒤에 나오고 가장 어려운 내용이라 제대로 공부를 하지 못했다. AOP를 제대로 사용하려면 스프링이 도입한 이유와 장점이 무엇인지 이해해야 한다. AOP의 적용 대상은 선언적 트랜잭션 기능(???)이다. AOP를 통해서 5단원에서 공부했던 코드를 더욱 더 깔끔한 방식으로 바꿀수 있다고 하네..... 6.1 트랜잭션 코드의 분리 5단원에서 서비스 추상화 기법을 통해 트랜잭션 기술에 독립적으로 만들어줬지만, 아직 서비스 코드에 쓸데없이 긴 트랜잭션 코드가 보인다. 그렇다고 이를 제거하기에는 트랜잭션 경계가 비즈니스 로직의 전후에 설정돼야 하는 것이 분명하다. 1) 트랜잭션 경계 설..
#5. 서비스 추상화 요약 비즈니르 로직을 담은 UserService 클래스를 만들고, 트랜잭션을 적용하면서 스프링의 서비스 추상화에 대해 알아보았다. 비즈니스 로직을 담은 코드는 데이터 엑세스 코드와 깔끔하게 분리되는 것이 좋다. DAO 기술 변화에 서비스 코드가 영향을 받지 않도록 인터페이스와 DI를 잘 활용해서 결합도를 낮춰야 한다.먼저 프레임워크에 대해 생각해보면, MVC나 DB 등 특정 기술을 도와주는 역할로 알고 있다. 하지만 스프링은 JavaEE 전반을 도와주는 것이기 때문에 에플리케이션 프레임워크라고 불린다. 1. 비즈니로직과 데이터 엑세스 코드의 분리 비즈니르 로직을 담은 UserService 클래스를 만들고, 트랜잭션을 적용하면서 스프링의 서비스 추상화에 대해 알아보았다. 5.1.2 까지 작업을 통해 Use..
#8. 스프링이란 무엇인가? 스프링의 정의 자바 엔터프라이즈 개발을 도와주는 오픈소스 경량급 애플리케이션 프레임워크 ( 1 ) 애플리케이션 프래임워크먼저 프레임워크에 대해 생각해보면, MVC나 DB 등 특정 기술을 도와주는 역할로 알고 있다. 하지만 스프링은 JavaEE 전반을 도와주는 것이기 때문에 에플리케이션 프레임워크라고 불린다. Spring의 개발 배경을 살펴보면, JavaEE 개발을 하던 로드 존슨이 불편함을 느끼고 스스로 개선방법을 고안하다 나온 것이다. 로드 존슨은 항상 "프레임워크 기반으로 접근하라"의 전략을 가지고 코딩을 하였다 한다. ( 2 ) 경량급라이브러리처럼 특정 기술만 포함하고 있어 무게가 가볍다는 뜻이 아니다. Spring 전 EJB에서 개발환경을 구성하려면 EJB 컨테이너를 가진 WAS를 준비해야 했다...
RESTful 웹서비스 만들기 # 시작하기 전에 REST라 하면 서버-클라이언트 통신 방식정도로만 이해하고, RESTful한 웹 API라고 하면 정확히 이해할 수가 없었다. 웹 2.0으로 들어오면서 REST의 역할과 RESTful한 웹 API가 무엇인지 Spring을 통해 알아보았다. # 만들어 볼 예제 HTTP GET request를 받아 JSON으로 response하는 서비스를 만들 것이다. http://localhost:8080/greeting {"id":1,"content":"Hello, World!"} 1) POJO 생성 2) Resource Controller 생성 Spring의 RESTful 웹서비스에서는, 컨트롤러가 HTTP 요청을 처리한다. 이 컴포넌트들은 @RestController annotation에 의해 쉽게 ..