spring boot + spring-data-jpa 설정
개요
이전 글인 (http://jekalmin.tistory.com/entry/springdatajpa-%EA%B8%B0%EB%B3%B8-%EC%98%88%EC%A0%9C) 에서 봤듯이 spring-data-jpa 를 설정하려면 xml에 상당히 많은 설정이 필요한 것을 볼 수 있다. 이런 많은 설정들이 spring boot를 사용하면서 기본으로 많이 제공해준다. 예제를 보면서 얼마나 간편해졌는지 확인해보자.
예제
먼저 eclipse를 쓰고 있다면 STS(Spring Tool Suite) 플러그인을 설치하자. 설치하고 나면 New > Project > Spring Starter Project 로 프로젝트를 생성하자.
생성할 때 스타일을 사용할 것인지 선택할 수 있다. 예제에서는 JPA와 Web만 선택하겠다.
먼저 hsqldb 라이브러리를 추가하자.
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
자, 이제 설정 준비가 끝났다. 클래스를 작성해보자.
Member.java
package com.tistory.jekalmin.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Member {
@Id
@GeneratedValue
private int memberSeq;
private String name;
private int age;
/**
* 다른 생성자를 만들었다면 기본 생성자를 따로 만들어 주는 것을 잊지말자.
*/
public Member(){}
public Member(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int getMemberSeq() {
return memberSeq;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Member [memberSeq=" + memberSeq + ", name=" + name + ", age="
+ age + "]";
}
}
MemberRepository.java
package com.tistory.jekalmin.repository;
import org.springframework.data.repository.CrudRepository;
import com.tistory.jekalmin.domain.Member;
public interface MemberRepository extends CrudRepository<Member, Integer>{
}
MemberController.java
package com.tistory.jekalmin.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tistory.jekalmin.domain.Member;
import com.tistory.jekalmin.repository.MemberRepository;
@Controller
public class MemberController {
@Resource
private MemberRepository repository;
@RequestMapping(value="/member/join")
public void join(Member member){
System.out.println( repository.save(member) );
}
}
save 하고나서 저장된 객체를 리턴해주기 때문에 바로 print 찍어보았다.
http://localhost:8080/member/join?name=min&age=26 요청을 해본 결과는 다음과 같았다.
Member [memberSeq=1, name=min, age=26]
결론
이전의 어마어마한 세팅들이 다 어디갔나 싶을 정도로 boot에서는 기본 설정이 많이 내장되어 있는 것 같다. boot를 이용해서 만들면 설정은 hsqldb 라이브러리 추가하는 것이 전부였고, entity와 repository를 만들어서 바로 사용하니 된다.
설정을 변경할 필요가 있다면 지원하는 어노테이션을 검색해 봐야 겠지만, 기본 설정하나는 정말 쉬워진 것 같다.