일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 스프링
- java
- 페이스북
- apache
- 시큐리티
- 스프링 부트
- 비동기
- Security
- 권한
- oauth2
- spring boot
- jvm
- gdg
- 페이징
- 스프링부트
- tomcat
- clean code
- RabbitMQ
- OAuth
- JPA
- load balancing
- Refactoring
- 클린코드
- JWT
- GC
- Spring
- Producer
- g1
- assertj
- 리팩토링
Archives
- Today
- Total
허원철의 개발 블로그
Spring Boot - Rest 본문
이번 글은 spring 에서 rest 서비스를 가장 빠르게 만드는 기술에 대한 내용 입니다.
1. gradle 설정
2. Entity 설정
3. Repository 설정
4. Events 설정
5. JPQL 이란?
dependencies {
compile('mysql:mysql-connector-java')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-data-rest')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('mysql:mysql-connector-java')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
2. Entity 설정
- 기존 Entity 와 다른 점은 @NamedQuery 라는 어노테이션이 추가되었습니다.
물론 없어도 되는 것이지만, JPQL를 설명하기 위해 넣어놓은 어노테이션입니다.
3. Repository 설정
- @RepositoryRestResource : repository 선언에 대한 어노테이션
① collectionResourceRel : 반환되는 데이터 배열의 이름
② path : 경로
- jpa 와 같이 선언만으로도 기본적인 CRUD 가 만들어집니다. 여기서 차이는 controller가 필요 없다는 것 입니다.
- /{repository} 이런 식으로 맵핑이 되기 때문입니다.
- @RestResource 가 달려있는 메소드를 보면 jpa 와 같은 형식입니다.
- 여기서도 다른 점이 있다면, 커스텀할 메소드에 대한 설정을 바꿀 수 있습니다.
① path : /{repository}/search/{search} 이런식으로 가능한다. default 로는 해당 메소드명을 적어야합니다.
② rel : 반환되는 데이터 배열의 이름(collectionResourceRel와 동일하게 해줍니다.)
③ exported : url 허용? 이라고 생각하면 쉬울 것 같다. 내부로직에만 필요한 경우 사용됩니다.
4. Events 설정
- 여기서 컨트롤러나 서비스용도로 쓰이는 event라는 것이 제공됩니다.
(DB의 트리거 같은 개념..? 정도라고 생각됩니다.)
- 간단하게 하나만 말씀을 드린다면, 입력하기 전에 대한 로직처리를 할 수 있습니다.
- 위와 같은 어노테이션이 입력하기 전에 대한 로직처리를 하기 위한 것입니다.
- insert를 하게 되면 아래와 같이 log를 볼 수 있습니다.
- 하지만!! 저렇게 어노테이션으로 하게 되면 config에 등록하지 않으면 event를사용 할 수 없습니다.
5. JPQL 이란?
- 쿼리를 작성할때 jpa 만으로 불가능한 상관이 올 수 있습니다. 그런 경우 jpql, querydsl 이라는걸 사용할 수 있습니다.
- EntityManager 를 통해 쿼리를 작성할 수 있습니다. (DAO 같은 개념이라고 봐도 될지 모르겠습니다...)
'web' 카테고리의 다른 글
Spring Boot - WebSocket (396) | 2016.12.04 |
---|---|
lonic Framework - Angular (421) | 2016.12.04 |
Spring Boot - Security OAuth2 (384) | 2016.12.04 |
Spring Boot - Validator (424) | 2016.12.04 |
Spring Boot - Security (388) | 2016.12.04 |
Comments