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>
 

번호 제목 글쓴이 날짜 조회 수
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 4436
45 Spring 2.0의 XML확장기능 (1) 황제낙엽 2007.08.15 1392
44 CSS와 XHTML을 사용한 효율적인 View 개발 전략 황제낙엽 2007.01.30 1358
43 스프링의 구조별 기능 설명 황제낙엽 2007.06.26 1510
42 실습 STEP2 - 기초편 (데이터 베이스 접속) file 황제낙엽 2007.06.21 1542
41 java.util.MissingResourceException: Can't find bundle for base name xxx, locale ko_KR 황제낙엽 2007.06.21 3814
40 자바지기 스프링 프레임웍 아티클 황제낙엽 2007.06.04 1384
39 AOP(Aspect Oriented Programming) 황제낙엽 2007.06.03 1302
38 Spring MVC 어플리케이션 개발 <12> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 1516
» Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 1693
36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 1611
35 Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 1081
34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 1040
33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 984
32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 1117
31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 1032
30 Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 943
29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 1135
28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 883
27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 862
26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 1491