본문으로 건너뛰기

CRUD 계약 작성

주제 목차 · 이전: dbclient 계약 개념 · 다음: 단독 검증과 동적 SQL

이 문서의 결과: BOD010(목록), BOD011(등록), BOD012(조회·수정·삭제) SQL 계약을 작성한다.

시작 조건

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에서 화면 없이 계약을 검증하는 방법을 배웁니다.