민트맛밤
18
2017-08-12 19:49:39.0 작성 2017-08-12 19:50:57.0 수정됨
2
269

JAVA 람다식을 공부하는 중에 막혔습니다.


별건 아니고, 학원에서 공부하는 중에 executeUpdate, executeQuery를 추상화 하는 걸 개인적으로 공부해볼까 해서 주말을 써서 공부하고 있었습니다.

executeUpdate는 Object 객체를 이용해서 손쉽게 추상화를 시켰는데요.

executeQuery가... 추상화가 당최 안되네요.


public static Object executeQuery(String sql, List<Object> queryList, DBSet dbset) {
		
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;
		
		BbsDto dto = null;
		
		try {
			conn = getConnection();
			System.out.println("2/6 S getBbs");
			
			psmt = conn.prepareStatement(sql);
			
			int i = 1;
			for (Object query : queryList) {
				if (query instanceof String) {
					psmt.setString(i, (String) query);
				} else if (query instanceof Integer) {
					psmt.setInt(i, (Integer) query);
				}
				i++;
			}
			
			System.out.println("3/6 S getBbs");
			//////////////////////
			//	람다식	//
			//////////////////////
			dbset.dbSet(psmt, rs);
			
		} catch (SQLException e) {			
			e.printStackTrace();
		} finally{
			close(rs, psmt, conn);
			System.out.println("6/6 S getBbs");
		}
		
		return dto;
	}

보시면 아시겠지만 중간에 dbSet이라는 함수형 인터페이스를 이용해 while(rs.next)부분을 실행하는건데요.

아무래도 rs.next 가 rs 객체의 상태를 변화시키는 메소드라 람다식으로는 돌아가지 않는 것 같습니다.

람다식으로는 executeQuery를 추상화 할 수 없는걸까요? 혹 다른 추상화 기법이 있을까요? 아님 그냥 하드코딩이 답일까요?? 궁금합니다. ㅜㅜ

0
0
  • 답변 2

  • kenu
    36k
    2017-08-12 21:39:30.0

    0
  • 민트맛밤
    18
    2017-08-12 23:31:26.0

    답변 감사합니다. 역시 그랬군요. ㅜㅜ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.