Spring과 Oracle DB 연결 - 흐름

목표 : Mybatis 프레임을 통해 spring과 Oracle DB를 연결한다.
주의 : 초보자의 눈으로 본 흐름이다. (아래 그림은 클래스 다이어그램과 하등 상관없다)
  • 어렵지는 않은데 복잡하다. 할 수 있 다 는 뜻이다. 어쨌든 이 글에서 방명록 spring 프로젝트와 db를 어떻게 연결해야하는지에 알아보도록 할 것이다.
  • 전체적인 그림은 다음과 같다. 앞으로 자세하게 알아보도록 한다.

flow

Intro

Oracle db와 spring 을 연결하기 위해서는 여러 환경 설정과 다음과 같은 파일들이 필요하다. 참고문서

  • db.properties : Oracle db에 연결할 수 있는 정보를 담은 파일

    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@localhost:1521:XE
    user=hr
    password=hr
    
  • root-context.xml : db.properties를 읽어 값 세팅,mybatis의 sqlsession 객체를 가져옴

  • mybatis-config.xml : mybatis에게 guestbook.xml이 mapper라는 정보를 준다.

    <!--예시, full code 아님.-->
    <configuration>
        <mappers>
            <mapper resource="guestbook.xml" />
        </mappers>
    </configuration>
    
  • guestbook.xml : 쿼리문이 들어간 mapper 파일로서, java interface의 함수를 query문으로 구현한 느낌을 주는 파일이다.

    <!--예시, full code 아님.-->
    <mapper namespace="sesoc.intern.guestbook2.dao.GuestbookDao">
        <insert id="insertGuest" parameterType="GuestBookVO">
            INSERT INTO GUESTBOOK
            (seqno, username, pwd, text)
            VALUES
            (guestbook_seq.nextval, #{username}, #{password}, #{content})
        </insert>
    
  • guestbookDao.java : DB에 저장될 데이터를 처리할 함수 이름이 있는 interface다.

  • guestbookMapper.java : @Repository 객체다. interface를 .class로 가져와 그것의 함수를 사용한다.

  • guestbookController.java : @Controller 객체다. guestbookMapper를 객체로 만들어 이용한다.

  • guestBookVO.java : DB에 저장될 데이터를 value object로 표현한 것이다.

flow

Oracle SQL 정보를 root-context.xml에 넘김

  • db.properites 에 oracle SQL 에 접근할 수 있는 정보가 들어있다. 이 파일을 root-context.xml에 넣어주면 spring 프로젝트에서 oracle SQL에 접근할 수 있다.

dbflow

mybatis를 통해 java obj와 SQL 자동 매핑

mybatisflow

  • mybatis는 java 객체와 SQL 객체가 자동매핑할 수 있게 도와주는 프레임워크다.

  • 이때 guestbookDao.java 가 인터페이스로 중요한 역할을 한다.

  • guestbookDao.java 파일의 함수가 호출되면 이 함수와 매치되는 guestbook.xml의 쿼리문이 실행되는 느낌이다. 따라서 SQL에 접근할 수 있게 된다.

    daoGuestbook

java 파일에서 guestbookDao 인터페이스를 이용해 DB 접근

javaflow

  • guestbookMapper인 repository 객체 에서 guestbookDao 인터페이스를 사용한 함수를 만들어 데이터를 전달한다.

    @Autowired
    GuestbookMapper dao;
    public List<GuestBookVO> selectAll() {
        GuestbookDao dao = session.getMapper(GuestbookDao.class);
        List<GuestBookVO> list = dao.selectAll();
        return list;
    }
    
  • GuestbookController에서 guestbookMapper의 객체를 만들어 데이터를 저장하고 읽는 등의 행위를 한다.

    @Autowired
    GuestbookMapper gm;
    @RequestMapping("/list")
    public String list(Model model) {
        List<GuestBookVO> list = gm.selectAll();
        model.addAttribute("list",list);
        return "list";
    }
    

다음 편에서 더 자세하게 알아보도록 한다… 힘들쓰


© 2018. All rights reserved.

Powered by Hydejack v8.5.2