Programming/JPA

JPA로 CRUD 구현하기_(4)비즈니스 로직 수행

Deveun 2021. 8. 20. 23:05

** 이전게시글 참고:

2021.08.20 - [Programming/JPA] - JPA로 CRUD 구현하기_(3)CRUD 구현

 

 

1. Service 구현

DB와 통신하며 데이터를 주고받는 CRUD 기능 구현이 끝났다.

이제 기능을 비즈니스 로직을 수행하는 MemberService 클래스를 구현해보자.

 

[service/MemberService.java]

package service;

import repository.MemberRepository;
import vo.Member;

public class MemberService {

    private MemberRepository memberRepo;

    public MemberService(MemberRepository memberRepo) {
        this.memberRepo = memberRepo;
    }

    // 멤버 생성
    public void registerMember(String id, String username, Integer age) {

        Member newMember = new Member(id, username, age);
        memberRepo.save(newMember);

        System.out.println("Member Created");
    }

    // 멤버 조회
    public void findMember(String id) {
        Member member = memberRepo.findById(id);

        System.out.println("findMember=" + member.getUsername() + ", age= " + member.getAge());
    }

    // 멤버 수정
    public void editMember(String id, String username, Integer age) {
        memberRepo.update(id, username, age);

        System.out.println("Member Changed");
    }

    // 멤버 삭제
    public void deleteMember(String id) {
        memberRepo.delete(id);

        System.out.println("Member Deleted");
    }
}

 

 

2. Main 구현

이제 구현된 기능을 main메소드에서 수행해보자.

 

[JpaMain.java]

import infra.JpaMemberRepository;
import repository.MemberRepository;
import service.MemberService;

public class JpaMain {

    public static void main(String[] args) {

        // Repository 구현 객체를 Service에 주입하여 사용
        MemberRepository jpaMemberRepo = new JpaMemberRepository();
        MemberService service = new MemberService(jpaMemberRepo);

        // CRUD application start
        service.registerMember("member1", "deveun", 20);
        service.findMember("member1");
        service.editMember("member1", "jpa", 30);
        service.deleteMember("member1");
    }
}

/*
실행 결과
Member Created
findMember=deveun, age= 20
Member Changed
Member Deleted
*/

 

생성 / 수정 / 삭제기능을 각각 실행해보고 H2 Database Member테이블 값을 비교해보면 다음과 같이 잘 반영되는 것을 볼 수 있다.

 

여기까지 JPA로 CRUD 기능을 구현해봤다.

테스트 코드가 없어서 각각의 기능을 테스트 해보는데 불편함이 있는데, 다음 게시글에서 Junit 단위테스트 코드를 작성해보자.

 

 

 

[참고서적] 자바 ORM 표준 JPA 프로그래밍, 김영한 저자

[참고서적] DDD START! 도메인 주도설계 구현과 핵심 개념 익히기, 최범균 저자

[참고] https://www.javaguides.net/2018/12/jpa-crud-example.html