src/main/java
src/main/resources
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
<property name="driverClassName" value="org.h2.Driver"/> // driverClassName -> H2 데이터베이스 드라이버를 지정
<property name="url" value="jdbc:h2:mem:jpashop"/>
// url -> 메모리 내 H2 데이터베이스에 연결하는 JDBC URL을 설정
jdbc:h2 -> H2 데이터베이스를 사용하는 JDBC 연결,
mem -> 인메모리 모드로 데이터베이스를 실행
jpashop -> 데이터베이스의 이름 지정
<property name="username" value=""/> // DB 접속 정보를 설정
<property name="password" value=""/> // DB 접속 정보를 설정
</bean> 💡Spring Boot를 사용할 경우 아래와 같이 대체된다. // application.properties
// 데이터 소스 설정
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:jpashop
spring.datasource.username=
spring.datasource.password=
// JPA 설정
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> // JPA를 사용할 때
<property name="dataSourc" ref="dataSource"/>
</bean><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> // LocalContainerEntityManagerFactoryBean -> JPA를 스프링 컨테이너에서 사용할 수 있도록 spring framework가 제공하는 기능
<property name="dataSource" ref="dataSource"/> // 사용할 데이터소스를 등록
<property name="packagesToScan" value="jpabook.jpashop.domain"/> // @Entity 탐색 시작 위치 지정
<property name="jpaVendorAdapter"> // 사용할 JPA 벤더를 지정
<!-- 하이버네이트 구현체 사용 -->
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="jpaProperties"> <!-- 하이버네이트 상세 설정 -->
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> // 사용할 데이터베이스 방언을 지정
<prop key="hibernate.show_sql">true</prop> // 실행하는 SQL을 콘솔에 출력
<prop key="hibernate.format_sql">true</prop> // SQL 정렬해서 보기
<prop key="hibernate.use_sql_comments">true</prop> // SQL 코멘트 보기
<prop key="hibernate.id.new_generator_mappings">true</prop> // 새 버전의 ID 생성 옵션
<prop key="hibernate.hbm2ddl.auto">create</prop> // DDL 자동 생성 -> 옵션 : create, create-drop, update, validate
// create : 기존 DDL을 제거하고 새로 생성
// create-drop : 애플리케이션을 종료할 때 생성한 DDL을 제거
// update : 현재 데이터베이스 DDL과 비교해서 변경사항만 수정
// validate : 현재 엔티티 매핑 정보와 데이터베이스 스키마가 같은지 비교한다. 다를 경우, 경고를 남기고 애플리케이션을 실행하지 않는다.
</props>
</property>
</bean>src/main/webapp
일반적으로 계층형 구조를 사용한다.
앞서 프로젝트 구조에서 살펴보았지만, 다시 한번 정리해보자.