메모장

Set 기법 (글 + 댓글 , 공지 + 답변) 본문

JSP/개념정리

Set 기법 (글 + 댓글 , 공지 + 답변)

Itchild 2024. 4. 29. 11:52
728x90
반응형

 

글 + 댓글

댓글 + 대댓글

상품 + 후기

공지 + 답변

...

이런 구조를 코드로 작성할때 "Set" 이라는 기법 씀

 

"Set"

1:N = 글:댓글 ( 글 하나에 댓글 여러개 같은거에 많이 쓰인다.)

 

 

네이버 웹툰을 예시로 들어보자

하나의 댓글에 대댓글이 여러개 달리는 모습 (61개가 달렸다 )


"Set" 기법을 구성하는 방법

여기서 잠깐 ! 여기서 말하는 "Set"은 컬렉션 프레임워크의 set 이 아니라 set 세트 의 의미

 

구성순서

하나의 VO를 만들어준다. -> BoardSet (묶음,모음집의Set임)

-> 구성 (1:N 담을려고 만든거니까 1자리 N자리 따로)

-> 1자리 ( 댓글 자리 ) : BoardVO

-> N자리 ( 대댓글 자리 ) : ArrayList<ReplyVO> rdatas

 

멤버변수로 댓글과 대댓글을 갖는 BoardSet 이라는 VO 클래스 생성


BoardSet 이라는 vo를 생성했다면

BoardSetDAO 도 생성해주기

 

읽어와 볼껀데 BoardDAO에서 SelectAll 로 읽을건데 -> 게시글만 읽지말고 댓글들도 읽어야 하는데 / BoardDAO의 SelectAll 이랑 ReplyDAO의 SelectAll 이랑 같이 읽어줘야한다.

 

  1. model 패키지에 BoardSetDAO 만들어준다 → 다른DAO와 마찬가지로 JDBC 연결

ArrayList<BoardSet> selectAll (게시글 하나마다 댓글 여러개여야 하니까)

 

2. 게시글에서 댓글 하나 불러오면 여러개 대댓글도 달려야하니까 ReplyDAO도 BoardSetDAO에서 selectAll

해야됨

SelectAll 해서 하나씩 불러옴 하나만 넣는게 아니라 BoardSet을 여러개 넣어줘야(while)

bs.setBoard(data) 댓글 묶음들을 BoardSet 객체 bs 라는 변수 공간에 담아준다.

→ datas.add(bs) 댑스가 하나 더 깊어짐

 

현재 보드셋 1:N 자리 받고 싶어 -> 여러개 받아서 -> 반환보내주는중 -> 보드셋 하나에 리플라이 여러개 만들어야함 -> BoardSet 하나에 Reply 여러개 (while) -> pstmt=conn.preparestatement(sql_selectall) 하는걸로 꺼내줌 -> 위에 selectAll 이름 같으니까 _REPLY 붙여주고

-> rs=pstmt.executeQuery -> 위의 rs가 안끝났는데 밑의 rs가 시작 하는게 아니니까 ->Set류는 다른 rs(리저트셋은 다르게 같고 있어야함) rs2 라고 해둔다 (다른 rs)임

->결과가 나옴 / while(rs2.next) { } 해서 -> 필요한 데이터 rdatas.add(rvo) 에 담아주기

다 꺼내면 안되니까 - FK WHERE절 (내가 보고싶은 댓글의 대댓글만 보이게 해야 한다.)

→ 셀렉트올에 모든걸 보는거 말고 이것만 보여주세요 할때 LIMIT 0,? 걸어줌

 

 

BoardSet 의 배열 ArrayList 객체의 변수 이름 datas

BoardSet 하나의 객체 변수이름 bs

BoardVO 하나의 객체 변수이름 data

ReplyVO 의 배열 ArrayList 객체의 변수 이름 rdatas

ReplyVO 하나의 객체 변수이름 rVO

 

 

★ 정리

1:N을 Set -> 셀렉트올 과 리플라이 활용 -> 다른점 : 해당 글에대한 댓글만 갖고오니까 FK WHERE절 -> 세팅하고 -> 갖고와서 하나의 VO에 N개의 댓글로 이루어짐 - 이중반복문 형태이다. / while 안에 while

 

★ public ArrayList<BoardSet> selectAll(BoardVO bVO,int count) -> count를 VO안에 넣을수 있으면 넣는게 좋다 -> 빠져나와있으면 유지보수에 불리하다.

 

★★ 라스트 정리

1:N 관계에 대해 Set 사용한다 -> set은 2개 이상의 sql문 뽑아와서 사용한다 이때 갯수를 컨트롤 할수 있으니까 카운트 해줌 ( 더보기 기능 구현하려고 할 시 몇개의 댓글을 보여주고 가릴 것인지 )

-> 하나 여러개 했으니까 이중 while문이 생길수밖에 없다

 

위에서 data를 set 한게 밑에 숫자 뒤에 와야함 -> data.setBid 가 1, 여기 세팅할때 와야한다. (댓글 번호를 찾아서 대댓글 보여주기 )

 

 

 

728x90
반응형

'JSP > 개념정리' 카테고리의 다른 글

Set 기법 적용  (0) 2024.04.29
비동기 처리  (0) 2024.04.29
FrontController  (0) 2024.04.29
커스텀 태그  (0) 2024.04.29
리스너 ( jsp 크롤링 )  (0) 2024.04.29