게시판1) Spring 과 DB 연결

  • Spring 을 사용해 다음과 같은 아주 간단한 게시판을 만드려고 한다.
  1. index 페이지에서는 회원가입을 한 뒤 로그인을 한다.
  2. board 페이지로 들어가서 게시판이 보인다.
  3. 게시글을 누르면 post 페이지가 보이고 게시글과 댓글이 보인다.

1124sp6

전체적인 흐름

1. db 테이블 설계, 만들기 main/resources에 .sql 파일에 테이블이랑 시퀀스 생성 코드 저장
2. project facet 에서 자바버전, pom.xml 에서 java와 spring 버전 변경 (자바 : 1.8, spring : 	4.3.6)
3. db.properties 파일에 oracle db 연결 정보 생성
4. 라이브러리 추가
5. mybatis-config.xml , root-context.xml 세팅, mappers 폴더 만들어서 mapper파일 생성
6. vo 만들어줌 (vo 만들 시 db와 변수 타입 맞추기)
7. interface 만들기
8. Repository 만들기
9. JSP, CONTROLLER를 오가며 화면구성

1. DB 테이블 만들기

  • 총 세개의 테이블, member, board, reply 를 만들 것이고, 각각 테이블에 어떤 변수가 있어야하는지 정한 후 Oracle SQL에서 table을 생성해준다.
  • member: user를 저장하는 테이블이 필요하다.

1124sp3

  • board: 게시글을 저장하는 테이블이 필요하다. 여기서 userid는 foreign key로 줄 것 같지만 아니다. 회원탈퇴를 해도 글은 계속 남아있어야 하기 때문에 member 테이블과 관계를 맺지 않는다.

1124sp4

  • reply: 댓글을 저장하는 테이블이 필요하다.

1124sp5

  • 테이블과 함께 시퀀서를 만들어준다. 그리고 쿼리는 저장해 놓는게 좋아서 board.sql 파일에 저장해놓는다.

2. java, spring 버전 바꾸기

  • project facet 에서 java를 1.8로,
  • pom.xml 에서 java를 1.8, spring 을 4.3.6으로

3. db.properties 파일

  • Orcle SQL 에 접속할 수 있는 정보를 담은 파일을 src/main/resources에 만들어준다.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
user=hr
password=hr

4. library 추가

  • ojdbc6.jar 을 web-inf 안에 lib폴더를 만들어 갖다 놓는다.
  • pom.xmlmybatis.jar, mybatis-spring.jar, spring-jdbc.jar 의 dependency 설정을 추가해준다. 자세히
  • jstl을 쓸 것이기 때문에, pom.xml에서 servlet-api, jsp-api 버전 또한 수정해준다.자세히
  • lombok library 를 추가해준다. 자세히

5. xml 파일을 만든다.

mybatis-config.xml

  • 아래와 같이 mappers 태그 아래에 mapper resource 를 넣어주면 된다. mapper file을 아직 안 만들어서 만든 후에 다시 채워넣을 것이다.
<configuration>
    <mappers>
        <mapper resource=""/>
        <mapper resource=""/>
    </mappers>
</configuration>

root-context.xml

  • src main webapp web-inf spring 의 root-context.xml 코드 를 넣어준다.자세히

mapper.xml

  • mapper를 여러가지 만들 것이기 때문에 src/main/resouces에 mappers 폴더를 만들어 거기에 mapper.xml을 넣는다.
  • Table이 세개니까 mapper또한 세개를 만들어준다.

6. VO를 만든다.

  • board VO , memberVO, replyVO를 만든다.

package sesoc.intern.board.vo; import lombok.Data; @Data public class Board { private int boardseq; private String userid; private String title; private String message; private int hitcount; private String regdate; private String originalfile; private String savedfile; }

package sesoc.intern.board.vo; import lombok.Data; //vo 만들 때 db테이블 변수 이름이랑 똑같이 해주는게 가장 좋다. @Data public class Member { private String userid; private String userpwd; private String username; private String gender; private String email; private String phone; private String hobby; private String birth; private String address; }

package sesoc.intern.board.vo; import lombok.Data; @Data public class Reply { private int replyseq; private int boardseq; private String userid; private String replytext; private String regdate; }

7. Interface를 만든다.

public interface memberMapper {
    public int join(Member mebmer); //회원가입
    public Member selectOne(Map<String,String> map);//조회 (로그인시 사용할 것이다)
    public int update(Member member);
    public int delete(Map<String,String> map);
}

8. Repository를 만든다.

  • 여기서 interface와 session 을 사용해 controller에서 Oracle SQL에 접근할 수 있게 해 줄 것이다.
@Repository
public class MemberRepository {
    //session  이라는 것 다른 곳에서 쓰는거랑 다르다.
    @Autowired
    SqlSession session;
}

◇ Spring 게시판 포스팅 시리즈 ◇

  1. Spring과 DB 연결하기 - 현재 글
  2. 회원 가입 화면 구성
  3. ID 중복 확인 하기
  4. 로그인 페이지 만들기
  5. 게시판 화면 구성하기
  6. 글 쓰기 기능 구현
  7. 글 확인 기능 구현
  8. 글 수정 기능 구현
  9. 게시판 페이징
  10. 파일 첨부 기능
  11. 파일 다운 기능
  12. MIME 타입
  13. 글 수정시 파일 변경

© 2018. All rights reserved.

Powered by Hydejack v8.5.2