SlideShare a Scribd company logo
SPRING DATA JPA
SIMPLE EXAMPLE
이종철, 탑크리에듀(topcredu.co.kr)
1. 프로젝트 생성
• Spring Boot, WEB MVC, Spring Data JPA, Maria DB를 이용하여 간단히
예제를 만들어 보겠습니다.
• 마리아DB 설치는 아래 URL 참조하세요
• http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=524
• STS에서 File -> New Project -> Spring Starter Project
• Name : springjpaexam
• Type : MAVEN
• Package : jpa
• 다음화면에서 SQL -> JPA, MySQL, WEB -> Web 선택
2. src/main/resources/application.properties
spring.datasource.platform=mysql
spring.datasource.sql-script-encoding=UTF-8
spring.datasource.url=jdbc:mysql://localhost/jpa_emp?createDatabaseIfNotExist=tru
e
spring.datasource.username=root
spring.datasource.password=1111
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
#엔티티 클래스를 기반으로 테이블을 자동갱신/생성 하도록
spring.jpa.hibernate.ddl-auto=update
logging.level.jpa=DEBUG
3. 도메인 모델 클래스(Emp.java)
package jpa.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Emp {
@Id
@GeneratedValue
private Integer empno;
private String ename;
public Emp() {}
public Emp(String ename) {
this.ename = ename;
}
public Integer getEmpno() { return
empno; }
public void setEmpno(Integer empno) {
this.empno = empno; }
public String getEname() { return
ename; }
public void setEname(String ename) {
this.ename = ename; }
}
4. 레토지터리 클래스(EmpRepository.java)
package jpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import jpa.domain.Emp;
// JpaRepository 에서 기본적인 CRUD를 제공한다.
// JpaRepository 매개변수로 도메인클래스와 키타입을 기술한다.
public interface EmpRepository
extends JpaRepository<Emp, Integer> {
}
5. 서비스 인터페이스(EmpService.java)
package jpa.service;
import java.util.List;
import jpa.domain.Emp;
public interface EmpService {
Emp save(Emp e);
void delete(Integer empno);
Emp getEmp(Integer empno);
List<Emp> getAllEmp();
}
6. 서비스 구현체(EmpServiceImpl.java) - 1
package jpa.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import jpa.domain.Emp;
import jpa.repository.EmpRepository;
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
EmpRepository empRepository;
public Emp save(Emp e) {
return empRepository.save(e);
}
6. 서비스 구현체(EmpServiceImpl.java) - 2
public void delete(Integer empno) {
empRepository.delete(empno);
}
public Emp getEmp(Integer empno) {
return empRepository.findOne(empno);
}
public List<Emp> getAllEmp() {
return empRepository.findAll();
}
}
7. 컨트롤러(EmpController.java) - 1
package jpa.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import jpa.domain.Emp;
import jpa.service.EmpService;
@RestController
@RequestMapping("/emp")
public class EmpController {
@Autowired
EmpService empService;
7. 컨트롤러(EmpController.java) - 2
// http://localhost:8080/emp/get/2
@RequestMapping(value = "/get/{empno}", method =
RequestMethod.GET)
public Emp get(@PathVariable Integer empno) {
return empService.getEmp(empno);
}
// http://localhost:8080/emp/save.do?ename=홍길동
@RequestMapping(value = "/save", method = RequestMethod.GET)
public Emp add(Emp emp) {
return empService.save(emp);
}
7. 컨트롤러(EmpController.java) - 3
// http://localhost:8080/emp/save/새길동
@RequestMapping(value = "/save/{ename}", method =
RequestMethod.GET)
public Emp add2(@PathVariable String ename) {
return empService.save(new Emp(ename));
}
// http://localhost:8080/emp/delete/2
@RequestMapping(value = "/delete/{empno}", method =
RequestMethod.GET)
public void delete(@PathVariable Integer empno) {
empService.delete(empno);
}
7. 컨트롤러(EmpController.java) - 4
// http://localhost:8080/emp/getall.do
@RequestMapping(value = "/getall", method = RequestMethod.GET)
public List<Emp> getAll() {
return empService.getAllEmp();
}
}
연습이 대가를 만듭니다.
실무 JAVA, Spring Framework, JPA 교육 전문
탑크리에듀 http://www.topcredu.co.kr

More Related Content

PPTX
Metode Quine Mc Cluskey - Logika Informatika
PPTX
Materi 7 Context Free Grammar
PDF
L1_concept of stress_v1.pdf
PDF
Kubernetes on GCP
PDF
기계학습 현재와미래 Pdf
PDF
PPTX
Blogs
PDF
Syllabus 2017
Metode Quine Mc Cluskey - Logika Informatika
Materi 7 Context Free Grammar
L1_concept of stress_v1.pdf
Kubernetes on GCP
기계학습 현재와미래 Pdf
Blogs
Syllabus 2017

Viewers also liked (9)

PDF
EL FLORECIMIENTO DEL ÁRBOL SAGRADO Y EL SIGNIFICADO DE LA PIPA SAGRADA
PPTX
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
PPTX
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
PDF
El gran maestro jesús el cristo entre los indígenas hopi del occidente de l...
PDF
fundamentos-de-la-publicidad
PDF
Aitken 2016 causes and consequences of oxidative stress in spermatozoa
PDF
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
PDF
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
EL FLORECIMIENTO DEL ÁRBOL SAGRADO Y EL SIGNIFICADO DE LA PIPA SAGRADA
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
El gran maestro jesús el cristo entre los indígenas hopi del occidente de l...
fundamentos-de-la-publicidad
Aitken 2016 causes and consequences of oxidative stress in spermatozoa
[구로IT학원추천/구로디지털단지IT학원/국비지원IT학원/재직자/구직자환급교육]#9.SQL초보에서 Schema Objects까지
#6.SQL초보에서 Schema Objects까지_구로IT학원/오라클교육/자바교육/국비지원/재직자환급교육/내일배움카드/사업주위탁
Ad

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

PDF
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
PDF
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
PDF
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
PPTX
[IT교육/IT학원]Develope를 위한 IT실무교육
PPTX
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
PPTX
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
PPTX
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
PPTX
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
PPTX
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
PDF
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
PDF
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
PPTX
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
PPTX
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
PPTX
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
PDF
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
PPTX
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
PPTX
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
PPTX
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
[IT교육/IT학원]Develope를 위한 IT실무교육
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
Ad

스프링 JPA 강좌(Spring Data JPA 간단 예제)

  • 1. SPRING DATA JPA SIMPLE EXAMPLE 이종철, 탑크리에듀(topcredu.co.kr)
  • 2. 1. 프로젝트 생성 • Spring Boot, WEB MVC, Spring Data JPA, Maria DB를 이용하여 간단히 예제를 만들어 보겠습니다. • 마리아DB 설치는 아래 URL 참조하세요 • http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=524 • STS에서 File -> New Project -> Spring Starter Project • Name : springjpaexam • Type : MAVEN • Package : jpa • 다음화면에서 SQL -> JPA, MySQL, WEB -> Web 선택
  • 4. 3. 도메인 모델 클래스(Emp.java) package jpa.domain; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Emp { @Id @GeneratedValue private Integer empno; private String ename; public Emp() {} public Emp(String ename) { this.ename = ename; } public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } }
  • 5. 4. 레토지터리 클래스(EmpRepository.java) package jpa.repository; import org.springframework.data.jpa.repository.JpaRepository; import jpa.domain.Emp; // JpaRepository 에서 기본적인 CRUD를 제공한다. // JpaRepository 매개변수로 도메인클래스와 키타입을 기술한다. public interface EmpRepository extends JpaRepository<Emp, Integer> { }
  • 6. 5. 서비스 인터페이스(EmpService.java) package jpa.service; import java.util.List; import jpa.domain.Emp; public interface EmpService { Emp save(Emp e); void delete(Integer empno); Emp getEmp(Integer empno); List<Emp> getAllEmp(); }
  • 7. 6. 서비스 구현체(EmpServiceImpl.java) - 1 package jpa.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jpa.domain.Emp; import jpa.repository.EmpRepository; @Service public class EmpServiceImpl implements EmpService { @Autowired EmpRepository empRepository; public Emp save(Emp e) { return empRepository.save(e); }
  • 8. 6. 서비스 구현체(EmpServiceImpl.java) - 2 public void delete(Integer empno) { empRepository.delete(empno); } public Emp getEmp(Integer empno) { return empRepository.findOne(empno); } public List<Emp> getAllEmp() { return empRepository.findAll(); } }
  • 9. 7. 컨트롤러(EmpController.java) - 1 package jpa.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import jpa.domain.Emp; import jpa.service.EmpService; @RestController @RequestMapping("/emp") public class EmpController { @Autowired EmpService empService;
  • 10. 7. 컨트롤러(EmpController.java) - 2 // http://localhost:8080/emp/get/2 @RequestMapping(value = "/get/{empno}", method = RequestMethod.GET) public Emp get(@PathVariable Integer empno) { return empService.getEmp(empno); } // http://localhost:8080/emp/save.do?ename=홍길동 @RequestMapping(value = "/save", method = RequestMethod.GET) public Emp add(Emp emp) { return empService.save(emp); }
  • 11. 7. 컨트롤러(EmpController.java) - 3 // http://localhost:8080/emp/save/새길동 @RequestMapping(value = "/save/{ename}", method = RequestMethod.GET) public Emp add2(@PathVariable String ename) { return empService.save(new Emp(ename)); } // http://localhost:8080/emp/delete/2 @RequestMapping(value = "/delete/{empno}", method = RequestMethod.GET) public void delete(@PathVariable Integer empno) { empService.delete(empno); }
  • 12. 7. 컨트롤러(EmpController.java) - 4 // http://localhost:8080/emp/getall.do @RequestMapping(value = "/getall", method = RequestMethod.GET) public List<Emp> getAll() { return empService.getAllEmp(); } }
  • 13. 연습이 대가를 만듭니다. 실무 JAVA, Spring Framework, JPA 교육 전문 탑크리에듀 http://www.topcredu.co.kr