CRUD 계약 작성
주제 목차 · 이전: dbclient 계약 개념 · 다음: 단독 검증과 동적 SQL
이 문서의 결과: BOD010(목록), BOD011(등록), BOD012(조회·수정·삭제) SQL 계약을 작성한다.
시작 조건
- 04. 도메인 모델과 데이터베이스에서 만든
Board테이블
BOD011.xml: 등록
<?xml version="1.0" encoding="UTF-8"?>
<mapper xmlns="contract.xsd">
<header>
<application>HDS</application>
<project>BOD</project>
<transaction>BOD011</transaction>
<datasource>DB01</datasource>
<use>Y</use>
<desc>게시글 신규 등록</desc>
</header>
<commands>
<statement id="ID01" seq="0" use="Y" timeout="0" desc="게시글 입력">
<![CDATA[
INSERT INTO Board (Category, Title, Content, Author, DatePosted)
VALUES (@Category, @Title, @Content, @Author, datetime('now', 'localtime'));
]]>
<param id="@Category" type="String" length="-1" value="" />
<param id="@Title" type="String" length="-1" value="" />
<param id="@Content" type="String" length="-1" value="" />
<param id="@Author" type="String" length="-1" value="" />
</statement>
</commands>
</mapper>
BOD012.xml: 조회·수정·삭제
<?xml version="1.0" encoding="UTF-8"?>
<mapper xmlns="contract.xsd">
<header>
<application>HDS</application>
<project>BOD</project>
<transaction>BOD012</transaction>
<datasource>DB01</datasource>
<use>Y</use>
<desc>게시글 조회·수정·삭제</desc>
</header>
<commands>
<statement id="GD01" seq="0" use="Y" timeout="0" desc="게시글 조회">
<![CDATA[
SELECT B.ID, B.Category, B.Title, B.Content, B.Author, B.DatePosted
FROM Board B
WHERE B.ID = @ID;
]]>
<param id="@ID" type="String" length="-1" value="" />
</statement>
<statement id="UD01" seq="0" use="Y" timeout="0" desc="게시글 수정">
<![CDATA[
UPDATE Board
SET Category = @Category, Title = @Title, Content = @Content, Author = @Author
WHERE ID = @ID;
]]>
<param id="@ID" type="String" length="-1" value="" />
<param id="@Category" type="String" length="-1" value="" />
<param id="@Title" type="String" length="-1" value="" />
<param id="@Content" type="String" length="-1" value="" />
<param id="@Author" type="String" length="-1" value="" />
</statement>
<statement id="DD01" seq="0" use="Y" timeout="0" desc="게시글 삭제">
<![CDATA[
DELETE FROM Board
WHERE ID = @ID;
]]>
<param id="@ID" type="String" length="-1" value="" />
</statement>
</commands>
</mapper>
기능 ID를 셋으로 나눈 이유
GD01(조회), UD01(수정), DD01(삭제)을 하나 의 파일에 담되 기능 ID를 나눠 관리합니다. 02. 프로젝트 구조와 파일 작업에서 배운 기능 ID 규칙(명령구분+기능+순번)을 그대로 따른 것으로, 화면 하나(BOD012)가 여러 동작을 하더라도 각 동작을 독립적으로 호출·검증할 수 있게 합니다.
성공 증거
-
BOD010.xml,BOD011.xml,BOD012.xml세 파일을 작성했습니다. - 각 SQL을 SQLite 클라이언트에서 직접 실행해 예상한 결과가 나오는지 확인했습니다.
다음 문서
단독 검증과 동적 SQL에서 화면 없이 계약을 검증하는 방법을 배웁니다.