인프런 커뮤니티 질문&답변

Jaehak Park님의 프로필 이미지
Jaehak Park

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

데이터베이스 스키마 자동 생성

test 클래스에서 persistence.xml인식문제

해결된 질문

작성

·

363

·

수정됨

0

db2 커리큘럼에서 main과 test의 db를 분리하는 방법을 학습 후 이번 강의에서도 사용해보려고 했는데요

스크린샷 2024-01-18 092526.png

다음과 같이 파일을 만든후 persistence.xml의 persistence.unit name을 다르게 지정해주고

<property name="jakarta.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/testJpa2"/>

이 부분도 main과는 다르게 설정해주고 실행하였는데 h2db에 연동이 안되는 것 같네요

application.properties로 하였을땐 잘 되는데 저렇게 하니 안됩니다. persistence.xml파일 자체를 인식못하는것 같은데 제가하는 방법이 잘 맞는지 몰라 질문드립니다

 

참고로 초기세팅같은 경우 이전강의에서와 같이 start.spring.io에서 진행하였습니다.

 

저의 pom.xml은

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>3.2.1</version>
       <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>jpa-basic</groupId>
    <artifactId>ex1-hello-jpa</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ex1-hello-jpa</name>
    <description>Demo project for Spring Boot</description>
    <properties>
       <java.version>17</java.version>
    </properties>
    <dependencies>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>

       <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <scope>runtime</scope>
       </dependency>
       <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
       </dependency>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
       </dependency>
    </dependencies>

    <build>
       <plugins>
          <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
             <configuration>
                <excludes>
                   <exclude>
                      <groupId>org.projectlombok</groupId>
                      <artifactId>lombok</artifactId>
                   </exclude>
                </excludes>
             </configuration>
          </plugin>
       </plugins>
    </build>

</project>

 

persistence.xml은

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <persistence-unit name="hello-test"> <!--persistence unit이름을 다르게 설정-->
        <properties>
            <!-- 필수 속성 -->
            <property name="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="jakarta.persistence.jdbc.user" value="sa"/>
            <property name="jakarta.persistence.jdbc.password" value=""/>
            <property name="jakarta.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/testJpa2"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>

            <!-- Java transaction api를 jakarta에서 찾아라-->
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JakartaJtaPlatform"/>

            <!-- 옵션 -->
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.use_sql_comments" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>
    </persistence-unit>
</persistence>

 

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Jaehak Park님

스프링부트와 함께 사용하는 경우에는 기본적으로 persistence.xml을 사용하지 않습니다.

대신에 persistence.xml에서 사용하는 속성들을 application.properties안에 주시면 됩니다.

속성은 spring.jpa.properties 하위에 주시면 됩니다.

감사합니다.

Jaehak Park님의 프로필 이미지
Jaehak Park

작성한 질문수

질문하기