(스프링) 전자정부프레임워크 DB연결(Postgresql) 후 데이터 조회

구동환경

  • Windows 10
  • eGovFrameWork 3.9
  • Postgresql 13 (+ DBeaver)
  • tomcat 8.5
  • jDK 1.8

전자정부프레임워크와 java, Postgresql 등등을 설치했다는 가정하에 진행

프로젝트 우클릭 New -> eGovFrame Web Project

  1. Project name, Group ID 작성 후 Next 버튼 클릭

  2. 에제 소스인 Generate Example 클릭 후 Finish 버튼 클릭

그렇게 몇 분 기다리고 나면

이런 거대한 프로젝트가 생긴다.

이걸 Tomcat 서버로 실행시키면

다음과 같은 예제 샘플을 확인할 수 있다.

이렇게 일단 뼈대는 구성해놨고, 먼저 DB에서 테이블과 임시데이터들을 만들어 준다.
나는 test_board라는 테이블을 만들었다.

create table test_board(
	bno serial primary key,
	name varchar(50) not null,
	age integer not null,
	content text not null,
	regdate timestamp default now()
);

오라클보다 좋은 점은 따로 sequence를 만들 필요 없이 "serial"이라는 변수 명을 사용하면 자동으로 값이 1씩 증가한다.

다음으로 더미데이터를 집어넣는다.

insert into test_board(name, age, content) values ('김말자', 50, '김말자의 게시글');
insert into test_board(name, age, content) values ('이상길', 23, '이상길의 게시글');
insert into test_board(name, age, content) values ('최필순', 99, '최필순의 게시글');
insert into test_board(name, age, content) values ('김덕배', 35, '김덕배의 게시글');
insert into test_board(name, age, content) values ('김팔호', 40, '김팔호의 게시글');
insert into test_board(name, age, content) values ('손필정', 30, '손필정의 게시글');
commit;
select * from test_board

그러고 나서 조회 쿼리를 통해서 데이터가 잘 들어갔는지 확인한다.

잘 들어 간 것을 확인할 수 있다.

다음으로 해야할 것은 MVC 패턴에서 가장 중요한 특징인 Dependency이다.
(많은 dependency들이 있지만, 단순히 연결만 확인하므로 DB관련해서만 추가함.)

		<repository>
       		<id>codelds</id>
      		<url>https://code.lds.org/nexus/content/groups/main-repo</url> 
		</repository>

        <dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-dbcp2</artifactId>
		    <version>2.7.0</version>
		</dependency>
        
        <dependency>
		    <groupId>org.postgresql</groupId>
		    <artifactId>postgresql</artifactId>
		    <version>42.2.18</version>
		</dependency>

작성 후 maven -> update maven project

앞으로 새롭게 작성할 파일은 다음과 같다.

  • BoardVO.java
  • BoardService.java (Interface)
  • BoardDAO.java
  • BoardServiceImpl.java
  • BoardController.java
  • Board_SQL.xml
  • boardList.jsp

BoardVO.java
(/src/main/java/egovframework/example/sample/service/BoardVO.java)

package egovframework.example.sample.service;

import java.util.Date;

public class BoardVO {

	private int bno;
	private String name;
	private int age;
	private String content;
	private Date regdate;
	public BoardVO() {

	}
	public int getBno() {
		return bno;
	}
	public void setBno(int bno) {
		this.bno = bno;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getRegdate() {
		return regdate;
	}
	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}

}

BoardService.java
(/src/main/java/egovframework/example/sample/service/BoardService.java)

package egovframework.example.sample.service;

import java.util.List;

public interface BoardService {
	public List<?> SelectBoardList(BoardVO vo) throws Exception;
}

BoardDAO.java
(/src/main/java/egovframework/example/sample/service/impl/BoardDAO.java)

package egovframework.example.sample.service.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import egovframework.example.sample.service.BoardVO;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;


@Repository("BoardDAO")
public class BoardDAO extends EgovAbstractDAO{

	public List<?> SelectBoardList(BoardVO vo) {
		return (List<?>) list("boardDAO.SelectBoardList",vo);
	}
	
}

BoardServiceImpl.java
(/src/main/java/egovframework/example/sample/service/impl/BoardServiceImpl.java)

package egovframework.example.sample.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import egovframework.example.sample.service.BoardService;
import egovframework.example.sample.service.BoardVO;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;


@Service("BoardService")
public class BoardServiceImpl extends EgovAbstractServiceImpl implements BoardService{

	@Resource(name="BoardDAO")
	private BoardDAO boardDAO;
	
	@Override
	public List<?> SelectBoardList(BoardVO vo) throws Exception {
		return boardDAO.SelectBoardList(vo);
	}

}

BoardController.java
(/src/main/java/egovframework/example/sample/web/BoardController.java)

package egovframework.example.sample.web;

import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import egovframework.example.sample.service.BoardService;
import egovframework.example.sample.service.BoardVO;


@Controller
public class BoardController {
	private static Logger Logger = LoggerFactory.getLogger(BoardController.class);
	
	
	@Resource(name="BoardService")
	private BoardService boardService;
	
	
	@RequestMapping(value="/boardList.do")
	public String selectDeptList(BoardVO vo, Model model) throws Exception {
		Logger.debug("deptList......sdfsdfsdfsdfsdfsdfiojwioerjsodijdfijsdio...........");
		List<?> list = boardService.SelectBoardList(vo);
		
		System.out.println(list);

		model.addAttribute("list",list);
		return "board/boardList";
	}
	
}

Board_SQL.xml
(/src/main/resources/egovframework/sqlmap/example/sample/Board_SQL.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="BoardSpace">

	<typeAlias  alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
	<typeAlias  alias="BoardVO" type="egovframework.example.sample.service.BoardVO"/>

	<select id="boardDAO.SelectBoardList" resultClass="BoardVO">
		select * from test_board
	</select>

</sqlMap>

boardList.jsp
(/src/main/webapp/WEB-INF/jsp/egovframework/example/board/boardList.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>test_board Page</h3>
		<div>
			<table class="custom-table">
				<thead>
					<tr>
						<th>순번</th>
						<th>이름</th>
						<th>나이</th>
						<th>내용</th>
						<th>작성일</th>
					</tr>
				</thead>
				<tbody>
					<c:forEach items="${list }" var="list">
						<tr>
							<td><c:out value="${list.bno }" /></td>
							<td><c:out value="${list.name }" /></td>
							<td><c:out value="${list.age }" /></td>
							<td><c:out value="${list.content }" /></td>
							<td><c:out value="${list.regdate }" /></td>
						</tr>
					</c:forEach>
				</tbody>
			</table>
		</div>
</body>
</html>

내용을 작성해주었다.

DB관련 설정을 거의 하지 않았기 때문에 이대로만 실행하면 당연히 에러난다.

이제 설정을 해보자.

context-common.xml

    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" />

추가한다.

context-datasource.xml

    <!-- PostgresSQL -->
	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="org.postgresql.Driver"/>
		<property name="url" value="jdbc:postgresql://localhost:5432/본인계정db이름" />
		<property name="username" value="본인계정ID"/>
		<property name="password" value="본인계정PW"/>
    </bean>

다른 DB관련 정보는 전부 주석처리 후 PostgresSQL만 작성한다.

sql-map-config.xml에서

	<sqlMap resource="egovframework/sqlmap/example/sample/Board_SQL.xml"/>

을 추가한다.

sql-mapper-config.xml에서

<typeAlias alias="boardVO" type="egovframework.example.sample.service.BoardVO"/>

을 추가한다.

sql-map-config.xml과 sql-mapper-config.xml 서로 다름!

그리고 추가사항으로 자꾸 에러가 나서 project에서 Alt+Enter를 누르고
Deployment Assembly Source에서

/src/main/resources

를 추가하고 Deploy Path에서

WEB-INF/classes

로 수정한다.

그리고 마지막으로 index.jsp에서

<jsp:forward page="/boardList.do"/>

로 변경하고나서 tomcat을 실행시키면

이렇게 글을 불러올 수 있다.

마지막으로

  1. 질문은 받는데, 해결 못할 수도 있습니다.. ㅎㅎ

  2. 시간 날 때 소스파일 올리겠습니다.

  3. 자세한 설명은 다른 블로그에도 많아서 굳이 하지 않았습니다.

  4. 틀린 부분이나 부족한 부분은 댓글 남겨주시면 감사하겠습니다.

  5. CRUD는 시간나면 올려보겠습니다.

이상 끝!

감사합니다!!😊✌

좋은 웹페이지 즐겨찾기