[SpringBoot] JPA를 이용한 CRUD

작성일자 : 2016.05.15

- Goal

Spring-boot 웹프로젝트에서 JPA를 이용한 CRUD 처리


- Time

10min


- Enviroment

java 1.8, STS3.7


- Tutorial

2016/05/15 - [Springboot] - [SpringBoot] STS를 이용한 gradle 웹프로젝트 생성

위 작업을 완료하고 나서 진행하도록 하자. 


build.gradle 파일 수정.

- JPA관련 패키지 추가

- lombok 라이브러리 추가 (domain getter,setter등을 쉽게 작성할 수 있도록 해주는 라이브러리 )

  https://projectlombok.org/ jar를 더블클릭하여 ide에 등록해주는 작업이 필요하다 .

- 추후 MySql로 DB를 변경하기 위해 관련 패키지도 추가한다. 


dependencies {

compile('org.springframework.boot:spring-boot-starter-data-jpa')

compile('org.springframework.boot:spring-boot-starter-jdbc')

compile('org.projectlombok:lombok:1.16.6')

compile('org.springframework.boot:spring-boot-starter-web')

compile('org.apache.tomcat.embed:tomcat-embed-jasper')

compile('javax.servlet:jstl:1.2')

runtime('org.hsqldb:hsqldb')

runtime('mysql:mysql-connector-java')

testCompile('org.springframework.boot:spring-boot-starter-test') 

}


Member 도메인 클래스를 추가해 준다. 

package com.web.domain;


import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;


import lombok.Data;


@Entity

public @Data class Member {

@Id

@GeneratedValue

int id;

String email;

String password;

}



JPA를 위한 interface를 생성한다. 

package com.web.repository;


import org.springframework.data.jpa.repository.JpaRepository;


import com.web.domain.Member;


public interface MemberRepository extends JpaRepository<Member, Integer>{}



기존 WEB Controller에 DB CRUD Method를 작성해준다. 

package com.web;


import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;


import com.web.domain.Member;

import com.web.repository.MemberRepository;


@Controller

@RequestMapping("/member")

public class WebController {

// rest

@Autowired

private MemberRepository memberDao;

@RequestMapping("/add")

@ResponseBody

public Member add(Member member){

Member memberData = memberDao.save(member);

return memberData;

}

@RequestMapping("/view/{id}")

@ResponseBody

public Member view(@PathVariable int id){

Member memberData = memberDao.findOne(id);

return memberData;

}


@RequestMapping("/list")

@ResponseBody

public List<Member> list(){

List<Member> memberList = memberDao.findAll();

return memberList;

}

@RequestMapping("/del/{id}")

public String delete(@PathVariable int id){

System.out.println("id=" + id);

memberDao.delete(id);

return "redirect:/member/list";

}

@RequestMapping("/edit/{id}")

@ResponseBody

public Member edit(Member member){

Member memberData = memberDao.save(member);

return memberData;

}

// web :: 

@RequestMapping("/jsp")

public String jspPage(Model model){

model.addAttribute("name","hello springBoot1234");

return "hello";

}

@RequestMapping("/")

public String index(){

return "helloHome";

}

}


실제 웹페이지를 이용하여 테스트를 해보도록 하자. 


-리스트 확인


- 삭제


- 삭제 후 리스트화면


- 수정 후 데이터 화면



- Conclusion

Spring boot와 JPA를 이용하여 간단하게 CRUD 작업을 처리하혔다. 현재 코드는 파일 DB를 이용하여 작성하였지만, 

설정파일 변경만으로도 DB를 MYSQL또는 ORACLE로의 변경이 가능하다. 이점이 바로 JPA에 장점이라고 할수 있다. 

다음에는 MySQL로 DB를 변경하고 실제 웹페이지를 이용하여 CRUD 기능을 구현해 보도록 하겠다. 


- GitHub

작업내용은 아래 gitHub에서 확인 가능하다. 

https://github.com/beans9/web/tree/jpa-crud