DB

OneTwoThree·2023년 6월 19일
0

h2 database

  • h2 database 설치 후 bin 폴더 들어가서 .\h2.bat 명령어 입력
  • 자세한 설정은 pdf 파일 참고

ddl을 디렉토리를 하나 만들어서 따로 관리하는게 좋다고 함


순수 jdbc 방법

  • 옛~날에 사용하던 방법

build.gradle

dependencies { // 라이브러리들
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	//데이터베이스 관련 라이브러리
	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	runtimeOnly 'com.h2database:h2'
	
}
  • 데이터베이스 관련 라이브러리 항목을 추가해준다
    • jdbc : 자바는 db랑 연동하려면 jdbc 드라이버가 꼭 필요함
    • h2 : db가 제공하는 클라이언트, h2 사용함

application.properties

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver 
spring.datasource.username=sa
  • spring.datasource.url=jdbc:h2:tcp://localhost/~/test : db url
  • spring.datasource.driver-class-name=org.h2.Driver : h2 db 사용

여기까지 하면 일단 스프링이 datasource를 db랑 연결하는것 까지 해줌. 즉 db에 접근하기 위한 준비가 된 것임

이제 전에 만들어놓은 MemberRepository를 구현하는 JdbcMemberRepository 클래스를 만들면 됨
클래스 코드는 그냥 복붙(옛날방식이라 참고만)


SpringConfig.java

package hello.hellospring;

import hello.hellospring.repository.JdbcMemberRepository;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class SpringConfig {

    private final DataSource dataSource;

	@Autowired
    public SpringConfig(DataSource dataSource){
        this.dataSource = dataSource;
    }
    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }
    @Bean
    public MemberRepository memberRepository(){
        // return new MemoryMemberRepository();
        return new JdbcMemberRepository(dataSource);
    }
}
  • DataSource는 데이터베이스 커넥션을 획득할 때 사용하는 객체
  • 스프링에서 설정파일을 보고 자동으로 빈에 등록해서 @Autowired로 생성자 주입이 가능함

  • 여기까지 하면 h2 db랑 연동할 수 있음
  • 이전에는 메모리를 사용해서 서버를 다시 돌릴 때마다 회원이 사라졌다면 지금은 db를 사용해서 유지됨

OCP

  • 핵심은 리포지토리를 구현해서 다형성에 의해 다른 코드는 바꾸지 않고 JdbcMemberRepository 클래스만 바꿔 끼워서 db를 사용하게 했다는 점!
  • 어셈블리 코드(어플리케이션을 조립하는 코드)만 바꿔도 됨

0개의 댓글