[TIL] 23.09.29

2023. 9. 29. 20:45· TIL/2023
목차
  1. 💋 오늘 공부한 것
  2. 💋 감정회고
반응형

 

반응형

 

💋 오늘 공부한 것

  • 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
  1. 💋 오늘 공부한 것
  2. 💋 감정회고
'TIL/2023' 카테고리의 다른 글
  • [TIL] 23.10.06
  • [TIL] 23.10.05
  • [TIL] 23.09.28
  • [TIL] 23.09.27
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
깃짱코딩연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 아키텍처
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 우테코5기
  • 람다와스트림
  • OOP
  • TDD
  • 함수형프로그래밍
  • 상속과조합
  • 상속
  • Composition
  • 조합
  • 람다
  • Java
  • lamda
  • Stream
  • 우테코
  • 레벨로그
  • 스트림
  • 컴포지션
  • 우아한테크코스
  • 우아한테크코스5기
  • 예외
hELLO · Designed By 정상우.v4.2.0
깃짱
[TIL] 23.09.29
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.