ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TDD] H2Database
    TDD 2024. 2. 13. 21:25

    [h2 database]

     

    1. localhost로 테스트 개발을 할때 주로 사용되는 소규모 DB

    2. java로 작성된 오픈소스 RDBMS(Relational Database)이고

    spring boot가 지원하는 인메모리 관계형 데이터베이스임

    3. 인메모리로 띄우면 애플리케이션을 재시작할때마다 초기화된다

     

    중요한게 본체는 콘솔창이다. 본체가 cmd 창임

    뜨는 웹화면은 그냥 SQL 쿼리문에 대한 GUI 제공하는 용임

     

    즉 콘솔창 닫으면 웹화면으로 쿼리 날려도 연결안됨

    쿼리 GUI 사용할때는 무조건 콘솔창 남겨놔야됨.

    즉 서버 계속 띄워놔야되는거임 이건 당연한거 ㅇㅇ

     

    이거 뿐만 아니라 그냥 @Test 할때나 spring으로 테스트할때도 무조건 콘솔창은 띄워놔야하는거임


    [.db file]

     

    h2 데이터베이스를 실행하면 생성되는 데이터베이스 파일

    보통 최초로 데이터베이스를 실행했을때만 생성된다

    이 파일에 해당 데이터베이스의 데이터들이 저장됨

     


    [Embedded mode vs Server mode]

     

    Embedded mode는 말그대로 임베디드 즉 해당 컴퓨터 내 인메모리로 있는 데이터베이스 파일

    다시 말하면 해당 컴퓨터의 파일 시스템 내부에 있는 데이터베이스 파일로 접근한다는거임

    여기서는 mv.db 파일로 접속한다는 것임

     

    보통 local access / local host 로 쓸때

    즉 지금은 embedded로 해야하는거임.

     

    한 명의 사용자가, 개발자가 single-user mode로 테스트 해볼때 사용하는거임

     

    Server mode는 다중의 사용자가 데이터베이스에 접근해야할때 사용하는거임

    이때도 mv.db파일에 접근하긴하는데 나만 사용하는것이 아니므로 접근 방식이 다름

    이때는 네트워크를 통해서 db에 접근하게 됨

     


    [h2 시작]

     

    mv.db 파일 생성된거 확인하고

     

    1. h2.bat 실행

     

    2. 콘솔 창에서 실행

     

    최초에만 jdbc:h2:~/test 이걸로 실행

    db파일을 만들어야하기 때문에 최초에는 이 명령어로 실행해야함

     

    위와 같이 db 파일이 만들어졌으면

    그 다음부터는 jdbc:h2:tcp://localhost/~/test 이걸로 접속

     

    3. 만약 mv.db가 만들어졌는데도 안되면

    2번부터 다시함.

    즉 jdbc:h2:~/test 이거로 딱한번만하고 정상진행되면

    그 다음부터는 jdbc:h2:tcp://localhost/~/test 이걸로 접속 

     


    만약 잘 안되면 그냥 mv.db 파일이랑 .h2.server 파일을 삭제하고

    다시 시작하는 것도 좋다

     

    어차피 테스트용이기 때문에 삭제한다고 큰일이 나는것도 아님

     

    그냥 다 삭제하고 새 db 파일이랑 h2 정보파일을 만들자.

     

    그리고 시작할때 항상 url 앞을 localhost:8082로 바꾸자

     

    그리고 h2를 사용할떄 콘솔창을 끄면 절대 안됨

    이 콘솔창 떠있는게 현재 h2 데이터베이스 서버가 띄워졌다는 소리임

    내가 이거 아무의미없는줄알고 끄고 했다가 연결안된다 떠서 2-3시간을 헤맴

    그냥 테스트할때 계속 켜놓는게 좋음 ㄹㅇ

    'TDD' 카테고리의 다른 글

    [TDD] @Spy  (0) 2024.09.01
    [TDD] @Mock vs @MockBean  (1) 2024.08.31
    [TDD] Mockito annotations.zip  (0) 2024.08.31
    [TDD] @WebMvcTest vs MockMvcBuilders.standaloneSetup  (0) 2024.08.31
    [TDD] Spring Boot 테스트 종류  (1) 2024.08.31