강의

멘토링

로드맵

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

naryung92님의 프로필 이미지
naryung92

작성한 질문수

No Persistence provider for EntityManager named hello 오류

작성

·

81

0

실행하면 위처럼 오류 발생합니다.

 

위 사진은 현재 폴더 구조입니다.

 

<?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">
        <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/~/test"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>

            <!-- 옵션 -->
            <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>

위 코드는 persistence.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>jpa-basic</groupId>
    <artifactId>ex1-hello-jpa</artifactId>
    <version>1.0.0</version>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- JPA 하이버네이트 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
        </dependency>
        <!-- H2 데이터베이스 -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.1.214</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
    </dependencies>
</project>

위 코드는 pom.xml입니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

naryung92님, 오류 메시지에 따르면 “No Persistence provider for EntityManager named hello”라는 것으로 볼 때 persistence.xml 파일의 위치 또는 설정에 문제가 있을 가능성이 큽니다.

IDE 및 Maven 프로젝트에서 persistence.xml 파일은 일반적으로 src/main/resources/META-INF 폴더 내에 위치해야 합니다. 제공해주신 정보를 바탕으로 이미 이 경로에 파일이 위치해 있는 것으로 보입니다. 따라서, persistence.xml의 설정 자체는 적절해 보입니다.

그러나 여전히 오류가 발생한다면, 다음을 확인해주세요:

  1. 프로젝트가 올바르게 Maven을 통해 빌드되었는지 확인하세요. Maven 빌드 시 persistence.xml 파일이 올바르게 target/classes/META-INF로 복사되는지 확인해보십시오.
  2. pom.xml에 정의된 종속성이 올바른지 확인하세요. Hibernate와 H2 데이터베이스에 대한 종속성은 올바르게 정의되어 있습니다. 하지만 사용중인 JPA 관련 종속성이 Hibernate 5.3.10.Final 인 것으로 보아, javax.persistence 대신 jakarta.persistence를 사용하셔야 할 수 있습니다. 현재 사용중인 JPA 버전(2.2)이 javax 네임스페이스를 사용하는지, 아니면 jakarta 네임스페이스를 사용하는 최신 버전인지 확인해보세요.

이러한 확인 후에도 문제가 해결되지 않는다면, 종속성 문제일 가능성이 있으므로 pom.xml 내의 Hibernate 버전을 현재 프로젝트에 맞는 버전으로 조정하거나 다른 관련 종속성들을 검토해보세요.

추가로, Spring Boot를 사용하는 경우 persistence.xml 파일을 사용하지 않고 application.properties 또는 application.yaml 파일에 JPA 및 데이터베이스 관련 설정을 정의할 수도 있습니다. Spring Boot는 자동으로 이러한 설정을 인식하고 적용합니다.

naryung92님의 프로필 이미지
naryung92

작성한 질문수

질문하기