- 게시물관리 예제
사용자 요구사항 정의
• 게시물 등록,조회,수정,삭제 기능을 구현해야함
• 다루어야할 데이터는 게시물로 글번호, 글제목, 내용 필드로 구성됨
• 아직 데이터 저장소가 선정되지 않음
모델 컴포넌트 개발
• 게시물 도메인과 리포지토리 개발
• 게시물 서비스 개발
- 도메인
DTO클래스
• 도메인은 모델객체를 부르는 포괄적인 용어이며, dto는 데이터 전달 객체를 부르는 용어이다.
• 컴포넌트간에 데이터를 전달하는 모델객체이다.
• 테이블 구조를 반영해야하고, 기본키 필드가 필수적으로 존재해야한다.
• 테이블의 PK는 글번호(no) 필드를 사용한다.
- 리스트와 맵
* 리스트와 맵은 대량으로 데이터를 저장할때 사용하는 자료구조이다.
• key: 기초자료형의 Wrapper의 클래스 또는 String을 사용할수 있다.
• Value: 기초자료형 또는 참조자료형을 사용할수 있다.
- Repository란 무엇일까?
데이터베이스에 접근하여 데이터 조회하거나 추가, 수정, 삭제 처리한다.
Repository 동작 순서
1. Service 컴포넌트가 Repository에 사용자 요청을 전달한다.
2. 데이터베이스에 접근하여 테이블에서 데이터를 꺼내온다.
또는 테이블에 새로운 데이터를 추가한다.
또는 테이블에 존재하는 데이터를 수정하거나 삭제한다.
3. 처리결과를 다시 Service에 전달한다.
클래스 의존관계
• 데이터베이스를 고민중인 상황으로 가정하여, 리파지토리를 변경하기 용이한 구조로 설계
• 인터페이스와 구현체로 구조를 구성하고, 상황에따라 구현클래스를 변경함
• 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계
• 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용
• 이와같은 구조로 리파지토리를 설계하면, 저장소가 변경이되어도 리파지토리를 사용하는 쪽의 코드는 변경이 없음
Repository 인터페이스 만들기
- 등록, 조회, 수정, 삭제 메소드 만들기
Repository 구현 클래스 만들기
- Repository 인터페이스를 상속받는다.
- 등록, 조회, 수정, 삭제 메소드 구현한다.
- Hashmap을 생성하여 테이블을 대체한다.
- crud 기능 구현
게시물 등록
- 글번호는 사용자에게 입력받지 않고, 시퀀스를 사용해서 시스템에서 자동으로 증가하도록 한다.
- .파라미터로 게시물 데이터(제목, 내용)를 수집해서 테이블에 저장한다.
게시물 목록 조회
- Board 테이블에서 데이터 전체를 조회한다.
- Board 객체 리스트를 리턴한다.
게시물 단건 조회
- Board 테이블에서 기본키 값을 기준으로 특정 게시물을 조회한다.
- 파라미터로 글번호(기본키)를 수집하여 이용한다.
- Board 객체를 리턴한다.
게시물 수정 메소드 (update)
- Board 테이블에서 기존데이터를 새로운 값으로 수정한다.
- 파라미터로 BoardDto 객체를 수집하여 이용한다.
- 정상적으로 수정이 되었는지 결과를 리턴한다
-> 0 : 해당번호의 게시물이 없어서 수정 실패
-> 1 : 수정 성공
게시물 삭제 메소드 (delete)
- Board 테이블에서 특정게시물을 삭제한다.
- 파라미터로 글번호(기본키)를 수집하여 이용한다.
- 정상적으로 삭제가 되었는지 결과를 리턴한다.
-> 0 : 해당번호의 게시물이 없어서 삭제 실패
-> 1 : 삭제 성공
단위테스트
- 단위테스트를 사용하면 컴포넌트별로 기능이 정상적으로 동작하는지 확인할 수 있다.
테스트 방법
1. 테스트 클래스를 만든다.
2. Repository 변수를 선언하고, 인스턴스를 주입한다.
3. 기능별로 단위테스트 메소드를 수행한다
-> 조회, 등록, 수정, 삭제
'WEB > Spring' 카테고리의 다른 글
controller 만들기 (0) | 2022.12.09 |
---|---|
service 만들기 (0) | 2022.12.09 |
프로젝트 구성 (0) | 2022.12.09 |
컨트롤러의 리턴타입과 예외처리 (0) | 2022.12.09 |
컨트롤러의 파라미터 수집 (0) | 2022.12.08 |