반응형
반응형
💋 오늘 공부한 것
- JDBC 구현 미션 1단계를 완료해서, 리뷰를 요청했다. 이건 제출한 Pull Request!
- 저번주까지 엄청 어려웠는데, 그냥 몇 밤 자고 일어났더니 지식이 좀 숙성되어서 오늘 구현할 때에 Reflection API를 아주 자유자재로 사용하게 되어서 좀 깜짝 놀랐다. 역시 공부하고 좀 된 지식이 최고야…
- 무튼 그래서 public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... params) 이런 식으로 rowMapper를 직접 지정해줘야 하는 메서드 외에도 public <T> T queryForObject(String sql, Class<T> requiredType, Object... params) 와 같이, requiredType만 지정해주면 알아서 해당 타입으로 rowMapper를 만들어서 매핑해주는 식으로 만들었다.
- 아래 코드가 requiredType만 가지고 Reflection API를 사용해서 인스턴스 만들고, 필드값을 모두 설정해주는 코드다. 하 너무 뿌듯해….
private <T> RowMapper<T> mapTo(Class<T> requiredType) {
return rs -> {
T instance = createInstance(requiredType);
fillFields(requiredType, rs, instance);
return instance;
};
}
private <T> T createInstance(Class<T> requiredType) {
Constructor<T> constructor = null;
try {
constructor = requiredType.getDeclaredConstructor();
constructor.setAccessible(true);
T instance = constructor.newInstance();
constructor.setAccessible(false);
return instance;
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}
private <T> void fillFields(Class<T> requiredType, ResultSet rs, T instance) {
Field[] fields = requiredType.getDeclaredFields();
try {
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
field.set(instance, rs.getObject(1 + i));
field.setAccessible(false);
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
- JdbcConnectionPool에 대한 실습을 하면서 아래와 같은 내용들을 알아냈다.
- private static final String *H2_URL* = "jdbc:h2:./test;DB_CLOSE_DELAY=-1";
- H2 데이터베이스에 연결하기 위한 URL
- DB_CLOSE_DELAY=-1은 데이터베이스 파일을 닫지 말라는 옵션임.
- *assertThat*(connection.isValid(1)).isTrue();
- connection이 1초 이내에 유효하다면 true를 반환하고, 그렇지 않다면 false를 반환
💋 감정회고
오늘은 오후에 눈을 떴는데, 잠깐 생각해보니 추석이었던 것!
엄마가 송편 만들자고 불러서, 원래는 송편을 잘 만들 생각이었는데 어쩌다보니 송편 아티스트가 되어버렸다.
왼쪽 위부터 딤섬 송편, 버섯 송편, 당고 송편, 콩 타르트 송편, 바게트 송편, 하트 송편, UFO 송편, 지팡이 송편, 원기둥 송편, 화난 고양이 송편
반응형
'TIL > 2023' 카테고리의 다른 글
[TIL] 23.10.06 (1) | 2023.10.06 |
---|---|
[TIL] 23.10.05 (0) | 2023.10.06 |
[TIL] 23.09.28 (0) | 2023.09.29 |
[TIL] 23.09.27 (0) | 2023.09.27 |
[TIL] 23.09.26 (1) | 2023.09.26 |