일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Bcrypt
- 쇼핑몰 프로젝트
- 쇼핑몰 포트폴리오
- 스프링 게시판
- spring 쇼핑몰
- 스프링 프로젝트 설정
- 이미지 출력
- 파일 업로드
- 스프링 파일 삭제
- 스프링 프로젝트
- oracle 설치방법
- 회원가입 기능
- 스프링 쇼핑몰
- ResponseEntity
- 스프링 업로드
- 스프링 게시판 구현
- 스프링 HikariCP
- 삭제 구현
- 스프링 프로젝트 기본 설정
- spring 프로젝트
- arraylist
- 스프링 메일 전송
- 스프링 쇼핑몰 프로젝트
- 스프링 이미지
- 정규표현식
- 인증번호 전송
- 로그아웃 기능 구현
- 스프링 포트폴리오
- BCrypt 적용
- 로그인 기능
- Today
- Total
Kim VamPa
[Spring][쇼핑몰 프로젝트][14] 작가등록 기능 구현 -1 본문
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188
목표
작가 등록 기능 구현위한 '영속 계층(Persistence Layter)', '비즈니스 로직 계층(Business Logic Layer)', 도메인 모델 계층('Domain Model Layer') 작업
이번 포스팅에선 작가 등록 기능 구현을 위해서 '영속 계층(데이터 처리 계층)', '비즈니스 로직 계층', '도메인 모델 계층' 작업을 하고자 합니다.
도메인 모델 계층 => AuthorVO 작성
- 작가 관련 데이터 운반 역할
영속 계층 => AuthorMapper.xml, AuthorMapper.java
- 작가 등록 연산 수행
비즈니스 로직 => AuthorService.java, AuthorServiceImpl.java
- 작가 등록 로직 구현
순서
0. vam_author 테이블 수정
1. AuthorVO.java 작성
2. Insert문 테스트
3. AuthorMapper.java 인터페이스
4. AuthorMapper.xml
5. AuthorMapper.java 메서드 테스트
6. AuthorService.java 인터페이스
7. AuthorServiceImpl.java
0. vam_author 테이블 수정
저번 포스팅에서 작성한 vam_author 테이블에 regDate, updateDate 두 개의 컬럼(Column)을 추가합니다. 행(row)을 추가한 날짜와 수정한 날짜를 자동으로 기록하기 위해서입니다. 수정을 위한 코드는 아래와 같습니다. (해당 컬럼은 기본값으로 현재의 시간이 입력되도록 작성하였습니다.(sysdate))
Oracle
1
2
3
4
|
alter table vam_author modify regDate date default sysdate;
alter table vam_author add updateDate date default sysdate;
|
MySQL
1
2
3
4
|
alter table vam_author add regDate timestamp default now();
alter table vam_author add updateDate timestamp default now();
|
기존의 데이터들을 모두 지우고 자동증가 값을 초기화해줍니다. 더미(Dummy) 데이터를 추가 해준뒤 값들이 정상적으로 출력되었는지 확인합니다. 결과를 보시면 정상적으로 등록할때의 시간이 자동으로 추가되는 것을 확인 할 수 있습니다.
Oracle
1
2
3
4
5
6
7
8
9
10
11
|
delete from vam_author;
ALTER TABLE vam_author MODIFY(authorId GENERATED AS IDENTITY (START WITH 1));
insert into vam_author(authorName, nationId, authorIntro) values('유홍준', '01', '작가 소개입니다' );
insert into vam_author(authorName, nationId, authorIntro) values('김난도', '01', '작가 소개입니다' );
insert into vam_author(authorName, nationId, authorIntro) values('폴크루그먼', '02', '작가 소개입니다' );
select * from vam_author;
|
MySQL
1
2
3
4
5
6
7
8
9
10
11
|
delete from vam_author;
alter table vam_author auto_increment = 1;
insert into vam_author(authorName, nationId, authorIntro) values('유홍준', '01', '작가 소개입니다' );
insert into vam_author(authorName, nationId, authorIntro) values('김난도', '01', '작가 소개입니다' );
insert into vam_author(authorName, nationId, authorIntro) values('폴크루그먼', '02', '작가 소개입니다' );
select * from vam_author;
|
cs |
※ 증가값 초기화 방법은 아래 글을 참고해주세요
자동값 증가(Oracle, MySQL)(IDENTITY, AUTO_INCREMENT)
1. AuthorVO.java 작성
vam_author 테이블에 데이터를 전달하거나, 테이블로부터 반환받은 데이터를 담을 객체를 정의하는 클래스(AuthorVO.java)를 com.vam.model 패키지에 생성하여 작성합니다.
vam_author 테이블에 있는 컬럼들을 기준으로 변수들을 작성하였고, 추 후 vam_nation에 있는 nationName 컬럼의 데이터를 같이 호출할 경우를 대비해 해당 변수도 같이 정의하였습니다.
private 접근자를 붙인 변수를 작성한 후 해당 변수들을 수정하거나 읽을 수 있도록 getter/setter/toString 작업을 합니다. Lombok 사용자는 @Data 어노테이션만 붙이면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/* 작가 아이디 */
private int authorId;
/* 작가 이름 */
private String authorName;
/* 국가 id */
private String nationId;
/* 작가 국가 */
private String nationName;
/* 작가 소개 */
private String authorIntro;
/*등록 날짜*/
private Date regDate;
/* 수정 날짜 */
private Date updateDate;
|
2. Insert문 테스트
작가 테이블의 데이터를 추가하기 위한 쿼리문을 작성하여 테스트합니다.
( [0. vam_author 테이블 작성]에서 테스트 목적으로 더미(Dummy) 데이터를 넣을 때 사용한 insert문과 동일합니다.)
1
2
3
|
insert into vam_author(authorName, nationId, authorIntro) values('작가이름', '나라코드', '작가소개' );
|
해당 명령이 정상적으로 실행이 되었는지 확인합니다.
([0. vam_author 테이블 작성]에 있는 쿼리문을 실행하여 문제가 없었다면 굳이 한번 더 테스트할 필요는 없습니다.)
3. AuthorMapper.java
작가 정보 관련 쿼리 메서드만 분리하여 관리하기 위해서 com.vam.mapper 패키지에 AuthorMapper.java 인터페이스를 생성하였습니다. 해당 인터페이스에 작가 등록 쿼리를 실행하는 메서드를 작성합니다.
1
2
3
4
|
/* 작가 등록 */
public void authorEnroll(AuthorVO author);
|
4. AuthorMapper.xml
src/main/resources -> com/vam/mapper 경로에 AuthorMapper.java 인터페이스와 동일한 이름의 AuthorMapper.xml파일을 생성합니다.
AuthorMapper.xml 다음과 같이 작성합니다. namespace 속성 값에 AuthorMapper.java의 경로를 포함한 동일한 파일 이름이 작성되어야 합니다.
1
2
3
4
5
6
7
8
9
10
11
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vam.mapper.AuthorMapper">
</mapper>
|
작가 등록 기능을 수행할 <insert> 태그를 추가해줍니다. id속성을 추가해주고 속성 값은 AuthorMapper.java에서 작성한 작가 등록 기능을 수행하는 메서드명과 동일한 이름을 작성합니다.
<inset> 태그 내에는 [2. Insert문 테스트]에서 테스트했던 insert문을 작성합니다. 값이 들어가야 할 부분에 AuthorVO에서 정의된 변수가 호출될 수 있도록 순서에 맞게 AuthorVO의 변수 이름과 동일한 변수명을 #{}을 붙여서 작성합니다.
1
2
3
4
5
6
7
8
|
<!-- 작가 등록 -->
<insert id="authorEnroll">
insert into vam_author(authorName, nationId, authorIntro) values(#{authorName}, #{nationId}, #{authorIntro} )
</insert>
|
5. AuthorMapper.java 메서드 테스트
src/test/java 경로에 있는 com.vam.mapper 패키지에 AuthorMapperTests.java 클래스를 생성한 후 앞서 우리가 만든 AuthorMapper.java인터페이스의 authrEnroll메서드가 정상적으로 작동하는지 테스트합니다. 테스트를 위한 코드는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class AuthorMapperTests {
@Autowired
private AuthorMapper mapper;
/* 작가 등록 테스트 */
@Test
public void authorEnroll() throws Exception{
AuthorVO author = new AuthorVO();
author.setNationId("01");
author.setAuthorName("테스트");
author.setAuthorIntro("테스트 소개");
mapper.authorEnroll(author);
}
}
|
junit 테스트가 정상적으로 완료가 되었고, 데이터베이스에도 정상적으로 데이터가 삽입되었는지를 확인합니다.
6. AuthorService.java 인터페이스
com.vam.service 패키지에 AuthorService.java 인터페이스를 생성하고 작가 등록 메서드를 작성합니다.
1
2
3
|
/* 작가 등록 */
public void authorEnroll(AuthorVO author) throws Exception;
|
7. AuthorServiceImpl.java
com.vam.service 패키지에 AuthorService.java 인터페이스를 구현하는 클래스인 AuthorServiceImpl.java 클래스를 생성 후 상속 키워드를 추가합니다.
@Service 어노테이션을 추가합니다.
AuthorMapper.java 인터페이스를 주입해주는 코드를 작성합니다.
1
2
3
|
@Autowired
AuthorMapper authorMapper;
|
AuthorService.java 에서 정의한 작가등록 메서드를 오버 라이딩하여 AuthorMapper의 작가 등록 메서드를 호출하는 코드를 작성합니다.
1
2
3
4
5
6
7
8
|
@Override
public void authorEnroll(AuthorVO author) throws Exception {
authorMapper.authorEnroll(author);
}
|
REFERENCE
DATE
- 2020.02.08
'스프링 프레임워크 > 쇼핑몰 프로젝트' 카테고리의 다른 글
[Spring][쇼핑몰 프로젝트][14] 작가등록 기능 구현 - 3 (0) | 2021.02.10 |
---|---|
[Spring][쇼핑몰 프로젝트][14] 작가등록 기능 구현 -2 (4) | 2021.02.09 |
[Spring][쇼핑몰 프로젝트][13] 작가 테이블 구성 & 기타 작업(로고,footer영역, 관리자 페이지) - 2 (10) | 2021.02.05 |
[Spring][쇼핑몰 프로젝트][13] 작가 테이블 구성 & 기타 작업(로고,footer영역, 관리자 페이지) - 1 (11) | 2021.02.05 |
[Spring][쇼핑몰 프로젝트][12] 인터셉터 적용 (16) | 2021.02.01 |