-
BOARD REST API 웹 서비스 만들기설치&설정 관련/Spring Framework 2015. 7. 17. 18:05728x90
2015.09.21 추가 내용
백기선님께서 진행해 주신 강의를 보고 전체적으로 소스 리펙토링을 하였습니다.
제가 JPA와 jUnit을 많이 써보지 못하여, 누락하거나 잘못 사용한 부분에 대한 리펙토링입니다.
또한 JDK 1.8 로 변경 되었습니다.
참고 URL : https://github.com/keesun/amugona
N사의 서류 면접을 통과 하고, 코딩 테스트로 BOARD REST API를 만들라는 과제를 받고 만든 예제 입니다.
N사는 떨어졌...GIT HUB 주소 : https://github.com/lahuman/BoardAPI
1. 사용 프레임워크
- Gradle
- Spring
+ Spring Boot
+ Spring MVC
+ Spring DATA JPA
- Lombok
- SLF4j + logback
- DBMS
+ H2
+ c3p0 DB POOL
2. JDK 버젼
- JDK 1.7 이상 필요
3. 개발 환경
- IDE
+ Intellij
+ 필수 Plugin
- Lombok Plugin
Lombok 과 JPA 는 이 과제를 하면서 처음 사용해 보았습니다.
사실, 과제를 받고 고민을 많이 했었는데, 붙을지 떨어질지도 모르는거 내 공부나 하자란 식으로 했더니...JPA
JPA는 잘 모르지만, QUERYDSL 함께면 엄청난 시너지를 얻을 수 있다고들 하네요.
정말 기본적으로 사용하였습니다. 사용하고 느낀 점은 "DBMS에 대한 접근을 객체 기준으로 접근할 수 있다" 였습니다. 객체 기준으로 설계를 할 경우 SQL 없이 처리를 할 수 있고, 혹 복잡한 관계에 대한 처리는 @NamedQuery 라는 annotation을 이용할 수도 있습니다.(자바지기님이 올린 자료 참고 - 2006 자료지만, 공부하기 위해 참조하기 좋음)
앞으로 많이 쓰게 되지 않을까 조심스럽게 예상합니다.
Lombok
Lombok은 getter, setter를 자동으로 만들어주는 라이브러리 입니다. (LOMBOK 사이트)
POJO를 사용할때 getter, setter를 IDE TOOL을 이용해서 사용하지만 소스코드에 상당히 지저분해 보일때가 많습니다. Lombok을 이용하면 한줄의 annotation을 이용하여 처리가 가능합니다.
@Data public class Board{ private long id; pviate String author; private String title; }
주요 Class 설명
- Spring JAVA Config의 기본 파일로 추가적으로 파일에서 Spring Boot를 실행 하는 Method도 포함 합니다.
+ Spring Boot 실행 : main
+ 설정파일임을 선언 : @Configuration
+ Spring MVC 활성 : @EnableWebMvc
+ 컴포넌트 스캔 : @ComponentScan
+ 설정 스캔 : @EnableAutoConfiguration
- Spring MVC 설정
+ 인코딩 관련 : characterEncodingFilter
+ dispatch servlet "/" 에 대한 매핑 수락 : configureDefaultServlethandling
+ JSON 메시지 자동 변환 : configureMessageConverters
- JPA 관련 설정 파일로 datasource와 Entity 관리 Bean을 선언 한다.
+ datasource 생성 : datasource
+ JPA 관련 설정 : additionalProperties - SQL을 표기 한다던지, 초기 DDL 생성 관련 설정
+ Entity 관리 빈 설정 : entityManagerFactory - 여기서 주요 한것은 스캔 패키지를 설정한다.
em.setPackagesToScan(new String[] { "kr.pe.lahuman" });
* 초기 버젼에서는 PersistenceJPAConfig.java 파일을 사용하지 않고 application.properties 파일만을 이용하였으나, JAVA CONFIG로 통일 하기 위하여 변경함
- POJO 객체로 JPA의 기초가 된다.- Entity 객체 (https://www.facebook.com/lahuman/posts/1034423599941005?pnref=story 참고)
- Lombok 을 사용하였음.
- validate, column size, table name 등을 설정
- DTO 객체
- Lombok 사용
- validate
- 사용자 정의 Exception 설정
- DAO(Data Access Objects)로 Board의 CRUD를 호출 할 때 사용한다.
- 꼭 JpaRepository<Board, Long> 를 상속 받아야 한다.
- Controller로 브라우져를 통한 요청에 응답 처리를 한다.
참고 : http://www.baeldung.com/2011/12/13/the-persistence-layer-with-spring-3-1-and-jpa/
728x90'설치&설정 관련 > Spring Framework' 카테고리의 다른 글
[Spring Boot + Spring Security]H2 DB Console 사용하기 (0) 2015.08.26 [Spring-loadded]WAS 재기동 없이 개발하기 (0) 2015.08.20 [Spring-6]DBMS 연동 (0) 2014.12.12 [Spring-5]PropertySource 사용하기 (0) 2014.10.28 [Spring-4]국제화 서비스를 위한 MessageSource 설정하기 (0) 2014.10.24