😂2022.11.14

일일 회고 90일차

할일 및 한일

경험 및 배움

스프링 강의 수강 및 공부

오늘은 h2 데이터베이스를 설치 및 연동해보고, JDBC를 이용하여 리포지토리를 구현하였다.

순수 JDBC로 직접 모두 리포지토리를 짜는 것은 정말 매우 매우 어렵고, 하나도 이해가 가지 않았다.

물론 선수 지식이 부족한 것도 있겠지만, 이것은 한참 예전의 방식이고, 지금은 다행히? 이런 방식을 쓰지 않는다고 한다.

클래스를 다음과 같이 JdbcMemberRepository 를 생성하고, 내부 메모리를 쓰는 대신 데이터베이스 연동을 해보았다.

직접 코드를 짜진 않아서 연동하는 코드를 완전히 이해하지는 못하였지만, 로직에 대해서 이해할 수 있었다.

단순히 Config 파일만 변경함으로써, 내부 메모리를 사용하는 MemoryMemberRepository 에서 실제 데이터베이스에 저장을 하는 JdbcMemberRepository 로 변경할 수 있었다.

private DataSource dataSource;

    @Autowired
    public SpringConfig(DataSource dataSource) {
        this.dataSource = dataSource;
    }

위의 코드를 추가하여 데이터 베이스를 의존 관계 주입을 해주었다. 또한 다음 코드와 같이 변경함으로써 단순하게 교체를 할 수 있었다.

@Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
//        return new MemoryMemberRepository();
        return new JdbcMemberRepository(dataSource);
    }

이러한 것을 개방-폐쇄 원칙(OCP, Open-Closed Principle) 이라고 한다.

확장에는 열려있고, 수정, 변경에는 닫혀있다라는 원칙으로, 객체지향 코드에서 중요한 원칙으로 사용된다.

개방-폐쇄 원칙을 사용하여 코드를 짜고, 스프링의 DI (Dependencies Injection)을 사용하면 기존 코드를 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있다.

자세한 원칙에 대한 설명은 velog 작성글을 첨부한다.

개선 및 목표

  • 내일도 역시 스프링 강의 수강 및 자바 공부!

Last updated