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>
 

번호 제목 글쓴이 날짜 조회 수
공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
43 스프링의 구조별 기능 설명 황제낙엽 2007.06.26 42
42 실습 STEP2 - 기초편 (데이터 베이스 접속) file 황제낙엽 2007.06.21 21
41 java.util.MissingResourceException: Can't find bundle for base name xxx, locale ko_KR 황제낙엽 2007.06.21 2362
40 자바지기 스프링 프레임웍 아티클 황제낙엽 2007.06.04 54
39 AOP(Aspect Oriented Programming) 황제낙엽 2007.06.03 39
38 Spring MVC 어플리케이션 개발 <12> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 31
» Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 164
36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 10
35 Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 28
34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 51
33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 17
32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 22
31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 19
30 Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 125
29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 32
28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 51
27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 29
26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 18
25 Bean 생명주기 관리 황제낙엽 2007.03.23 24
24 Spring프레임워크 소개문서 (3) 황제낙엽 2007.03.22 35