해결된 질문
작성
·
363
·
수정됨
0
db2 커리큘럼에서 main과 test의 db를 분리하는 방법을 학습 후 이번 강의에서도 사용해보려고 했는데요
다음과 같이 파일을 만든후 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 하위에 주시면 됩니다.
감사합니다.