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 |
댓글