2024.05.20 추가내용
그저 예외처리를 줄이는게 최고인줄 알았어요...
성능테스트를 하기 전까진...
String sql = "SELECT id,name,login,player FROM member WHERE name = ?";
return jdbcTemplate.queryForObject(sql, (rs, rowNum) -> {
String a = rs.getString("name");
return new Member(rs.getLong("id"),
rs.getString("name"),
rs.getBoolean("login"),
rs.getBoolean("player"));}, name);
String sql = "SELECT id,name,login,player FROM member WHERE name = ?";
try {
return jdbcTemplate.queryForObject(sql, (rs, rowNum) -> new Member(rs.getLong("id"),
rs.getString("name"),
rs.getBoolean("login"),
rs.getBoolean("player"))
, name);
}
catch (EmptyResultDataAccessException e) {
return null;
}
그런데 예상치 못한 실패에 대해서만 예외를 사용해야 될텐데
이건 예상할 수 있는 실패다.
예외가 발생하면, Exception
객체가 생성되는데
이로 인해 오버헤드가 발생할 수 있다.
굳이 Exception
을 던지지 않아도
처리할 수 있는 로직이다.
예외처리를 하지 않고
사용자 존재 여부 확인 로직이 진행되도록 바꿔보자.
String sql = "SELECT id,name,login,player FROM member WHERE name = ? LIMIT 1";
List <Member> retMember = jdbcTemplate.query(sql, (rs, rowNum) -> new Member(rs.getLong("id"),
rs.getString("name"),
rs.getBoolean("login"),
rs.getBoolean("player"))
, name);
if (retMember.isEmpty()){
return null;
}
else {
retMember.get(0);
}
LIMIT 1
추가.queryForObject
에서 query
로 변경.List
객체의 사이즈에 따라 존재 유무 판별.Exception
사용은 최대한 줄여보자.
Exception
이 유용한 사례는 값을 리턴할 수 없는 생성자
이다.