티스토리 뷰
728x90
1. 이 포스트는 Spring Boot : REST Hibernate CRUD 구현의 연속이다.
2. Spring Data JPA로 CRUD를 작성할 때 필요한 것
2-1 데이터베이스 설정 파일
2-2 Entity 클래스 생성
2-3 JpaRepository를 상속한 DAO 인터페이스 정의
2-4 Service 구현
2-5 Controller와 Error 처리로직 구현
3. 여기서는 1번 항목링크의 REST + Hibernate CRUD 구현에서 다른 부분만 추가한다.
4. CustomerRepository 생성
4-1 JpaRepository를 상속하고 있으며 Generic Type은 첫번째는 다루는 Entity타입, 두번째는 ID의 타입이다.
package pe.pilseong.bootcustomerspringdata;
import org.springframework.data.jpa.repository.JpaRepository;
import pe.pilseong.bootcustomerspringdata.entity.Customer;
public interface CustomerRepository extends JpaRepository<Customer, Long> {
}
5. 서비스의 구현
5-1 서비스의 구현은 조금 달라지는데 Spring Data Jpa에서 자동생성하는 메소드를 사용한다.
5-1-1 JPA 메소드와 Hibernate 메소드를 섞어 놓은 것 같은데 읽어오기에는 find, 저장, 삭제는 save, delete을 쓴다.
5-2 @Transactional annotation이 사라졌다. Spring Data JPA가 내부적으로 자동 처리한다.
5-3 Optional을 사용하는데, 이것은 null pointer exception을 방지하기 위한 개념으로 자바 8에 추가되었다.
package pe.pilseong.bootcustomerspringdata.service;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pe.pilseong.bootcustomerspringdata.CustomerRepository;
import pe.pilseong.bootcustomerspringdata.entity.Customer;
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerRepository customerRepository;
@Override
public List<Customer> getCustomers() {
return this.customerRepository.findAll();
}
@Override
public Customer getCustomer(Long id) {
Optional<Customer> customer = this.customerRepository.findById(id);
if (customer.isEmpty()) {
throw new RuntimeException("Customer not found");
}
return customer.get();
}
@Override
public void saveCustomer(Customer customer) {
this.customerRepository.save(customer);
}
@Override
public void deleteCustomer(Long id) {
Optional<Customer> customer = this.customerRepository.findById(id);
if (customer.isEmpty()) {
throw new RuntimeException("Customer not found");
}
this.customerRepository.delete(customer.get());
}
}
5. 나머지는 모두 동일하다.
728x90
'Spring > Spring REST' 카테고리의 다른 글
Spring Boot REST : Data REST 사용 시 특정 Http Method 메소드 제어 (0) | 2020.05.28 |
---|---|
Spring Boot : Data REST - CRUD 구현 (0) | 2020.05.23 |
Spring Boot : REST + JPA CRUD 구현 (0) | 2020.05.23 |
Spring Boot : REST + Hibernate CRUD 구현 (0) | 2020.05.23 |
Spring : RestTemplate with Java Config - CRUD 클라이언트 구현 (0) | 2020.05.22 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- one-to-one
- Rest
- 스프링
- Angular
- 스프링부트
- crud
- 하이버네이트
- Security
- Many-To-Many
- 설정
- mapping
- 설정하기
- 로그인
- RestTemplate
- 매핑
- Spring Security
- login
- Spring
- XML
- 외부파일
- hibernate
- jsp
- MYSQL
- spring boot
- 상속
- WebMvc
- form
- 자바
- Validation
- one-to-many
250x250