본문 바로가기
IT/Spring

게시판 설계

by 봉즙 2019. 8. 5.

 

1. 데이터 베이스 설계 : 댓글 표현위해 3가지 작성(원글 번호, 가로 - 원글에 대한 인덴트, 세로 - 원글에 대한 뎁스를 표현)

 

2. 클라이언트 설계 : 아래그림

 

클라이언트 설계

DTO(VO) = data transfer object

데이터 역시 하나의 객체이기에 Arraylist로 만들어서 가져오도록한다.

 

커넥션 풀(datasource) : 커넥션 객체를 서버에서 관리(톰캣에서 설정)

<Resource auth="Container" 
          name="jdbc/oracle" 
          driverClassName="oracle.jdbc.driver.OracleDriver" 
          type="javax.sql.DataSource" 
          url="jdbc:oracle:thin:@localhost:1521:xe" 
          username="scott"
          password="tiger" 
          loginTimeout="10" 
          maxActive="50" 
          maxIdle="20"
          maxWait="5000" 
          testOnBorrow="true" />
 
 
<!--
    auth : 컨테이너를 자원 관리자로 기술
    name : JDBC이름, 변경 가능
    driverClassName : JDBC 드라이버
    type : 웹에서 이 리소스를 사용할 때 DataSource로 리턴됨
    username : 접속계정
    password : 접속할 계정 비밀번호
    
    loginTimeout : 연결 끊어지는 시간
    maxActive : 최대 연결 가능한 Connection수 (기본 20개)
    maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자
    maxWait : 사용 가능한 커넥션이 없을 때 커넥션 회수를 기다리는 시간 (1000 = 1초)
    testOnBorrow : db에 test를 해볼 것인지
-->

 

Connection : db와 연결

PrepareStatement : 쿼리문 전송

ResultSet : 데이터를 테이블의 형태로 갖는다.

	public ArrayList<BDto> list() {
		// TODO Auto-generated method stub
		
		ArrayList<BDto> dtos = new ArrayList<BDto>();
		
        
        //DB에 접근하기 위한 3가지 객체
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		try {
			
			connection = dataSource.getConnection();
			String query = "select bId, bName, bTitle, bContent, bDate, bHit, bGroup, bStep, bIndent from mvc_board order by bGroup desc, bStep asc";
			preparedStatement = connection.prepareStatement(query);
			resultSet = preparedStatement.executeQuery();
			
			while(resultSet.next()) {
				int bId = resultSet.getInt("bId");
				String bName = resultSet.getString("bName");
				String bTitle = resultSet.getString("bTitle");
				String bContent = resultSet.getString("bContent");
				Timestamp bDate = resultSet.getTimestamp("bDate");
				int bHit = resultSet.getInt("bHit");
				int bGroup = resultSet.getInt("bGroup");
				int bStep = resultSet.getInt("bStep");
				int bIndent = resultSet.getInt("bIndent");
				
				BDto dto = new BDto(bId, bName, bTitle, bContent, bDate, bHit, bGroup, bStep, bIndent);
				dtos.add(dto);
			}
			
			
		}catch(Exception e) {
			e.printStackTrace();
		}
		finally {
			try {
				if(resultSet != null) resultSet.close();
				if(preparedStatement != null) preparedStatement.close();
				if(connection != null) connection.close();
			}catch(Exception e2) {
				e2.printStackTrace();
			}
		}
		
		return dtos;
	}
	

 

 

'IT > Spring' 카테고리의 다른 글

페이징 처리  (0) 2019.08.20
Service  (0) 2019.08.14
form 데이터 값 검증  (0) 2019.08.05
ModelAttribute  (0) 2019.08.02
Path  (0) 2019.08.01

댓글