Spring | Spring Data JPA 이용 | Bean 설정 파일 생성

다음 준비하는 것은 Bean 설정 파일이다. Spring Data JPA를 사용하는 경우에는 “엔티티 관리자"라는 것을 사용하여 액세스한다. 이것을 생성하기 위해 “엔티티 관리자 팩토리’라는 Bean을 설정 파일에서 추가해야 한다..

그럼 “resources"폴더에 새로운 “dbbean.xml"라는 파일을 만들어 보자. 그리고 아래와 같이 내용을 작성하자.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc.xsd  
        http://www.springframework.org/schema/data/jpa 
        http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
 
    <jdbc:embedded-database id="dataSource" type="H2" />
 
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="generateDdl" value="true" />
            </bean>
        </property>
    </bean>
         
</beans>

이번에는 JPA와 JDBC 태그를 사용하기 위한 속성이 <beans> 태그에 여러가지가 추가되어 있다. 이 태그에는 2개의 Bean 설정 태그가 준비되어 있다.

<jdbc:embedded-database> 태그

이것은 데이터베이스의 데이터 정보(데이터 소스) 오브젝트에 대한 것이다. id=“dataSource"라고 명시되어 있고, 그 엔티티 관리자 팩토리에서 이 Bean을 사용하기 위한 ID이다. 또한 type=“H2"은 데이터베이스로 H2를 사용하고 있음을 나타낸다.

<bean id="entityManagerFactory"> 태그

엔티티 관리자 팩토리의 Bean 정의한다. 클래스에 org.springframework.orm.jpa 패키지의 LocalContainerEntityManagerFactoryBean라는 클래스를 지정한다. 속성으로 다음과 같은 항목을 사용할 수 있어야 한다.

  • dataSource : <jdbc : embedded-database> 마련한 Bean이 지정된다.
  • jpaVendorAdapter : JPA 벤더 어댑터라는 것을 지정한다. 여기에서는 HibernateJpaVendorAdapter 클래스의 Bean을 사용할 수 있어야 한다. 또한, 이 Bean에는 generateDdl이라는 속성을 제공하고 데이터베이스를 자동으로 생성할 수 있도록 해야 한다.

여러가지 Bean이 조합되어 있지만, 결국 모두가 “엔티티 관리자"라는 것을 사용할 수 있도록 하기 위한 것이다라는 점을 잘 이해하도록 하자. 또한 entityManagerFactory 속성은 우리는 Hibernate의 것을 이용하고 있지만, 다른 라이브러리를 사용할 수도 있다. 그런 경우 사용하는 업체 어댑터에 맞추어 주어야 한다.