[Java] sql return 제대로 이해 못 했던 부분

·2023년 11월 2일
0

JAVA

목록 보기
13/15
post-thumbnail

⭐ 쿼리문 return에 대하여

	public BoardDTO viewBoardPosts(int num) throws SQLException{
		try {			
		con = pool.getConnection();
		String sql = "select * from board where num = ?";
		ps = con.prepareStatement(sql);
		
		ps.setInt(1, num);
		rs = ps.executeQuery();
		
        List<BoardDTO> list = makeList(rs);
        return list.get(0);
		
		}finally{
			if (rs != null) rs.close();
			if (ps != null) ps.close();
			if (con != null) pool.returnConnection(con);
		}
	}

🎈
아래 코드를 보면 만들어진 DTO 객체를 굳이 굳이 list 에 담아서 반환하는 것을 볼 수 있다.
왜? 그냥 ResultSet 값에 DTO 객체를 넣어서 반환하면 안 되나?

그에 대해 공부하고 이 포스트를 작성한다.

그 이유는 list로 반환하는 것이 더 안전 하기 때문이다.

📎 생각해 볼 수 있는 세 가지 이유

단일 객체 대신 List 반환

데이터베이스 쿼리 결과로 여러 개의 객체가 반환될 수 있다. 따라서 결과 집합이 비어 있지 않다는 확신이 없다면 결과를 목록으로 return하는 것이 더 효율적이다. 이렇게 하면 필요한 경우 여러 개의 BoardDTO 객체를 처리할 수 있으며, 결과가 없을 때 null 대신 빈 목록을 return 할 수 있다.

코드의 일반성

데이터베이스 쿼리 결과를 바로 BoardDTO 객체로 반환하는 대신 목록으로 반환하면 코드가 더 일반적이고 유연해진다. 여러 개의 레코드를 처리해야 하는 경우, 데이터를 목록으로 쉽게 처리할 수 있다.

에러 처리

결과 집합에서 BoardDTO 객체를 만드는 동안 오류가 발생할 수 있다. 이러한 경우 예외 처리를 수행하려면 List와 같은 형태로 결과를 반환하고, 예외가 발생하지 않았다면 결과 목록의 첫 번째 요소를 반환하는 것이 안전하다.

따라서 데이터베이스 쿼리 결과를 목록으로 반환하면 코드가 더 견고하고 관리하기 쉬우며, 결과가 없을 경우에도 목록이 비어 있을 뿐만 아니라 예외 처리도 수월해진다.
결과를 return 할 때는 list 로 하는 것이 더 효율적이다.

profile
자바 백엔드 개발자 개인 위키

0개의 댓글

관련 채용 정보