

application.properties 설정 파일
이 application.properties 설정 파일은 Spring Boot 프로젝트에서 H2 인메모리 데이터베이스를 사용하면서 JPA 설정을 테스트 용도로 구성한 예입니다. 각 항목이 어떤 역할을 하는지 부드럽게 정리해드릴게요:
spring.application.name=BootTest01
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.username=sa
spring.datasource.password=abcd
mem:test는 메모리 위에 test라는 이름의 임시 DB를 만드는 거예요.sa는 기본 사용자 이름, 비밀번호는 abcd로 설정했어요.spring.jpa.hibernate.ddl-auto=create
validate, update, 또는 none을 써요.spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format-sql=true
format-sql=true는 그 쿼리를 예쁘게 정렬해서 출력해줘요.spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
logging.level.org.hibernate=info
debug로 바꿔서 더 많은 정보를 볼 수도 있어요.
DataInit 클래스파일 ( 어플리케이션러너 인터페이스를 상속받아 실행시 바로 실행됨. 컴포넌트 어노테이션)
아주 좋은 질문이에요! 이 코드에서 DataInit 클래스가 자동으로 실행되는 이유는 두 가지가 함께 작용하기 때문이에요:
@Component로 등록되었기 때문에 Spring이 관리하고,
ApplicationRunner를 구현했기 때문에 애플리케이션 시작 직후 자동 실행됩니다.
@Component 때문에 Spring이 이 클래스를 빈(Bean) 으로 등록합니다.@Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스를 스캔해서 빈으로 등록해요.@Autowired 같은 의존성 주입도 자동으로 작동해요.ApplicationRunner 인터페이스를 implements 했기 때문에 run() 메서드가 자동 실행됩니다.ApplicationRunner 또는 CommandLineRunner 를 구현한 클래스의 run() 메서드를 자동 호출해요.Spring이 "이거 컴포넌트네? 실행 중 관리해야지!"
Spring Boot가 "이 클래스ApplicationRunner구현했네? 앱 시작할 때run()실행하자!"

h2앱이 구동됐는지와는 상관없이 코드 실행 후 웹브라우저에 http://localhost:8080/h2-console/ 치고 접속하면 메모리베이스 디비생성.
http://localhost:8080/h2-console/ 로 들어가야만 하는가?그건 바로 H2 데이터베이스는 브라우저 기반의 웹 콘솔을 별도로 제공하기 때문이에요.
h2-console 이라는 웹 기반 툴을 열어야 돼요.spring.h2.console.enabled=true이 설정이 있어야만 콘솔을 사용할 수 있어요.
spring.h2.console.enabled=true
없으면 http://localhost:8080/h2-console/ 에 접속해도 404 에러가 나요.
application.properties 에 h2-console 을 열 수 있게 설정함DataInit 클래스에서 더미 데이터를 넣음http://localhost:8080/h2-console/ 접속jdbc:h2:mem:test (설정한 대로)sahttp://localhost:8080/h2-console/ 은 Spring이 만든 게 아님이건 H2 Database가 제공하는 UI이고, Spring Boot가 이 콘솔을 Web App에 자동으로 통합해주는 것이에요.
h2-console은 웹 페이지지만, Spring Boot에서는 명시적으로 열어줘야 활성화돼요.
그게 spring.h2.console.enabled=true인 거죠.
필요하시면 h2-console 접속 시 입력하는 항목들 예쁘게 표로 정리해드릴게요.
혹은 이제 이 데이터를 조회하거나 QueryDSL, JPA, JPQL로 검색해보고 싶은지도 알려줘요! 😊