이 글은 jojoldu라는 개발자분이 만드신
3) 스프링부트로 웹 서비스 출시하기 - 3. SpringBoot & Handlebars로 화면 만들기를 따라하면서 생긴 궁금점을 적는 일기장입니다!
Handlebars(Handlebars.js)
자바스크립트의 템플릿 엔진 중하나이며, Mustache(수염)를 기반으로 구현한 템플릿 인자 - {{ }} Bracket을 이용하여 data를 표현하는 것을 의미한다. 이를 이용하면 html 페이지에서 HTML + Bracket의 구성으로 디자이너와 개발자가 협업할 때도 디자이너에게도 이해하기 쉬운구조로써 협업을 하는데도 도움이 된다.
1. 문법이 다른 템플릿엔진보다 간단하다.
2. 로직 코드를 사용할 수 없어 View의 역할과 서버의 역할을 명확하게 제한할 수 있다.
3, Handlebars.js와 Handlebars.java 2가지가 다 있어, 하나의 문법으로 클라이언트 템플릿/서버 템플릿을 모두 사용할 수 있다.
4. Handlebars의 기본 경로는 src/main/resources/templates이다.(prefix:src/main/resource/templates, suffix: .hbs)
※build.gradle에 handlebars 의존성을 추가하고도 handlebars가 인식이 안된다면 프로젝트에 import가 안된 것이다. 이때는 수동으로 import를 실시하자(IDE마다 다름)
매핑 어노테이션
Spring 4.3 이후에는 @RequestMapping을 대체할 수 있는 어노테이션이 추가 되었다.
@GetMapping = @RequestMapping(value="/", method = RequestMethod.GET) 과 동일하다.
Controller와 Service의 역할 분리
비지니스 로직 & 트랜잭션 관리는 모두 Service에서 관리하고, View와 연동되는 부분은 Controller에서 담당하도록 구성한다.
트랜잭션
일반적으로 DB데이터를 등록/수정/삭제 하는 Service메소드는 @Transactional을 필수적으로 가져갑니다.
->해당 어노테이션(@Transactional)은 메소드내에 Exception이 발생하면 해당 메소드에서 이루어진 모든 DB작업을 초기화 한다.(모든 처리가 정상적으로 됐을때만 커밋을 진행)
1. 상세 설명 : 2개 이상의 쿼리를 하나의 커넥션으로 묶어 DB에 전송하고 이 과정에서 어떠한 에러가 발생할 경우 자동으로 모든 과정을 원래 상태로 돌려놓는다.(All or Nothing)
(1) 하나 이상의 쿼리에서 동일한 Connection 객체를 공유한다.
- java에서 DB로 연결할 때는 java.sql.Connection이란 객체를 이용하는데 이 Connection 객체에는 SetAutoCommit(자동커밋)이라는 메소드가 존재한다. 이 메서드와 연결된 autoCommit 객체는 true라는 기본값을 가지고 있으며 한번의 연결 이후 자동으로 커넥션을커밋해 종료시켜준다. 만약 트랜잭션을 이용하려면 이 자동커밋을 false로 바꾸고 수동커밋으로 변경해야만 한다.
이때, 스프링의 트랜잭션 기술을 사용하게 되면 다이나믹 프록시와 AOP라는 기술을 통해 세분화하여 트랜잭션을 컨트롤할 수 있게 한다. 어노테이션 기술로 @Transactional이 있다.
2. vs 프로시져 : 둘다 같은 맥락이긴 하지만 프로시져는 DB상에서 처리, 트랜잭션은 Java상에서 처리
'프로그래밍 > SpringBoot' 카테고리의 다른 글
스프링부트를 이용한 웹서비스 제작 따라하기(3) - 프론트,테스트편 (0) | 2019.02.01 |
---|---|
스프링부트를 이용한 웹서비스 제작 따라하기(2) (0) | 2019.01.29 |
스프링부트를 이용한 웹서비스 제작 따라하기(1) (0) | 2019.01.29 |