sitelink1  
sitelink2  
sitelink3  
extra_vars6  
http://blog.empas.com/ahnyounghoe/13222052


아티클링크와 회원사이에 별점을 부여하는 관계는 M:N 입니다. 별점이란 추천 하나당 부여하는 포인트를 의미합니다.
당연히 한명의 회원은 하나의 링크당은 하나지만, 여러 개의 아티클링크에 별점을 부여할 수 있죠.
반대로 하나의 링크에 대해서도 여러 회원의 별점을 부여할 수 있죠.
객체로써는 상호 메시지 콜이 가능하게(Navigable)하면 컬렉션(Collection) 형태의 멤버로 참조하게 되어 문제가 없죠. 그러나, 관계형 DB의 경우는 단방향성을 지니기 때문에 이를 해소하는 테이블을 만들어야 합니다.
-- ART:USER m:m 해소
DROP TABLE T_ART_USER IF EXISTS CASCADE;
CREATE TABLE T_ART_USER (
 ARTICLELINK_REF INTEGER,
 USERINFO_REF VARCHAR(15),
 CONSTRAINT FK_ART FOREIGN KEY (ARTICLELINK_REF) REFERENCES T_ARTICLELINK(ID),
 CONSTRAINT FK_USER FOREIGN KEY (USERINFO_REF) REFERENCES T_USERINFO(ID)
)
 
대략 위와 같은 테이블이죠. T_ARTICLELINK 테이블의 ID 컬럼을 FK_ART라는 이름으로 참조(제약)하고 그 값을 ARTICLELINK_REF 컬럼에 저장하고, T_USERINFO 테이블의 ID 컬럼을 FK_USER라는 이름으로 참조하고, 그 값을 USERINFO_REF 컬럼에 저장하는 것이죠.

 
이와 같은 화면 요구가 있을 때 별점으로 부과된 항목을 얻는 방법은 몇 가지가 있습니다. 우선 iBatis가 컬렉션 형태의 속성값을 Select문 호출로 설정해주는 기능을 제공하는데 이를 이용한 사례를 보죠.
 
 <resultMap id="article" class="articleLink">
  <result property="id" column="ID" />
  <result property="language" column="LANG" />
  <result property="title" column="TITLE" />
  <result property="link" column="LINK" />
  <result property="regiDate" column="REGI_DATE" />
  <result property="description" column="DESC" />
  <result property="submitter.id" column="USERINFO_REF" />
  <result property="starmarker" select="selectStarmarker" column="id" />
 </resultMap>

 <!-- SELECT Statements -->
 <select id="selectDefaultList" resultMap="article">
  select ID, LANG, TITLE, LINK, REGI_DATE, DESC, USERINFO_REF
  from T_ARTICLELINK
  order by ID DESC
 </select>
 <select id="selectStarmarker" resultClass="userinfo">
  select USERINFO_REF from T_ART_USER
  where ARTICLELINK_REF = #article_id#
 </select>
 
ArticleLink 객체의 starmarker 란 속성이 List 형태라면 하나의 값을 설정할 수가 없습니다. 그래서, 추가적인 select 문 호출을 위해 select 속성 값으로 selectStarmarker를 설정합니다. 그리고, 조건문에 제공할 매개변수를 column 값으로 제공하는 것이죠.
 
이렇게 설정한 후 setStarmarker 메소드가 호출될 때 그 사이즈 정보를 보관하도록 객체를 수정해보죠.
 
public class ArticleLink {
 /**
  * 총 별점
  */
 private Integer stars;
 
 ...
 
 public void setStarmarker(List<UserInfo> starmarker) {
  this.starmarker = starmarker;
  setStars(starmarker.size());
 } 
 
}
 
이제 jsp 페이지를 수정하면 위 그림과 같은 출력이 가능합니다.
 
  <c:forEach items="${articleList}" var="articleLink">
   <tr><td rowspan="4">별점: ${articleLink.stars}</td>
    <td>
    <a href="${articleLink.link}" target="blank">
    ${articleLink.title}</a></td></tr>
   <tr><td><a href="viewUserCtrb.do?user=${articleLink.submitter.id}" target="blank">
    ${articleLink.submitter.id}</a>
    (<fmt:formatDate value="${articleLink.regiDate}" type="date" pattern="yyyy/MM/dd" />)</td></tr>
   <tr><td>${articleLink.description}</td></tr>
   <tr><td>의견 수/카테고리</td></tr>
   </c:forEach>
  </table>
 

번호 제목 글쓴이 날짜 조회 수
» Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 383
36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 224
35 Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 234
34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 230
33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 209
32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 212
31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 224
30 Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 279
29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 220
28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 233
27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 213
26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 258
25 Bean 생명주기 관리 황제낙엽 2007.03.23 211
24 Spring프레임워크 소개문서 (3) 황제낙엽 2007.03.22 225
23 Spring프레임워크 소개문서 (2) 황제낙엽 2007.03.22 286
22 Spring프레임워크 소개문서 (1) 황제낙엽 2007.03.22 279
21 Cugain의 샘플프로젝트 jpetstore 분석기 - (1) jpetstore 설치 file 황제낙엽 2007.02.22 352
20 Cugain의 샘플프로젝트 jpetstore 분석기 - (7) PetStoreImpl.java 황제낙엽 2007.05.24 232
19 Cugain의 샘플프로젝트 jpetstore 분석기 - (6) petstore-servlet.xml 분석 황제낙엽 2007.04.27 203
18 Cugain의 샘플프로젝트 jpetstore 분석기 - (5) applicationContext.xml 분석 황제낙엽 2007.04.21 438