강의

멘토링

커뮤니티

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

tjrans303님의 프로필 이미지
tjrans303

작성한 질문수

H2 database

작성

·

311

0

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

sequence 수업을 듣고 H2 DB에서 시퀀스 관련 내용을 볼수가 없어요 어떻게 해결 하나요?

답변 3

0

자바 바전 11이면 위에 올린 pom.xm을, 1.8 일 경우 해당 댓글에 첨부한 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 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>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

        <!-- 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>1.4.200</version>
        </dependency>


    </dependencies>
</project>

자바8, 11 둘 다 정상 실행/시퀀스 생성 확인하였습니다

0

안녕하세요 tjrans303님 답변이 늦었습니다.

우선 테스트를 위해 h2의 db파일을 새로 생성하였습니다. (test2.mv.db)

아래 이미지를 보시면 아시겠지만 시퀀스가 없습니다.

image


public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        try {
            Member member = new Member();
            em.persist(member);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }
        emf.close();
    }
}

 

<?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="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test2"/>
            <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>

 

<?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>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

        <!-- 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>1.4.200</version>
        </dependency>


    </dependencies>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
</project>

 

다음과 같읕 실행 애플리케이션 로그가 출력되었고

image

image최종적으로 '시퀀스'가 생성되었습니다.

 

test2.mv.db 생성방법

맥)

터미널에 접속하여 test.mv.db가 존재하는 경로에다 생성하시면 됩니다.

별도의 설정을 하지 않았다면 /Users/계정명/ 일 것입니다.

해당 경로에서 'touch test2.mv.db' 명령어 입력하면 test2.mv.db 파일이 생성됩니다.

-

 

윈도우)

1. C:\Users\OMG(계정명) 하위에 텍스트 파일을 만듭니다.

[[ c드라이브 통해서 들어가도 되고, 바탕화면에 있는 내계정명 폴더로 들어가셔도 됩니다.]]

2. 텍스트 파일을 열고(내용x) 다른이름으로 저장을 누릅니다.

3. 파일 이름을 test2.mv.db, 파일형식을 모든 파일로 바꿉니다. 저는 우측에 인코딩은 utf-8로 했는데, 인코딩은 크게 중요한거 같진 않지만 우선 동일하게 맞춰주세요.

4. h2.bat 파일을 실행해주세요.(기본 실행창{실행시키면 열리는 창} or localhost:8082)

실행 후 아래와 같이 입력 후 연결 눌러주세요.

(jdbc:h2:tcp://localhost/~/test2 << JDBC URL 복사붙여넣기 하세요)


0

안녕하세요. tjrans303님, 공식 서포터즈 OMG입니다.
Member클래스의

id 필드 위에

@GeneratedValue(strategy = GenerationType.SEQUENCE)
어노테이션이 있는지 확인해주세요.

어노테이션이 선언되어 있다면,

persistence.xml에 ddl-auto를 "create"로 되어 있는지 확인하시고, 서버 재실행으로 시퀀스를 생성하시면 됩니다.

해결이 안될 경우 댓글남겨주세요.

영한님 강의 수강 관련 질문은 강의 커뮤니티에서 글 작성해주셔야 영한님과 서포터즈가 확인 가능합니다.

image

감사합니다.

tjrans303님의 프로필 이미지
tjrans303
질문자

그래도 해결이 안되요

h2 메인화면(로그인 화면)

h2 접속화면

인텔리제이에서 persistence.xml

위 3개 전체화면(일부캡쳐화면x)을 캡쳐해서 올려주세요.

tjrans303님의 프로필 이미지
tjrans303
질문자

imageimageimage

감사합니다. 큰 특이점은 안보이네요.

Member클래스 전체코드, JPaMain 전체코드

image

위에 짤린 내용도 있을 것 같은데 콘솔 출력내용은 복붙으로 올려주시면 작성하신 코드 기반으로 초기 세팅하여 확인해보겠습니다

tjrans303님의 프로필 이미지
tjrans303
질문자

image

tjrans303님의 프로필 이미지
tjrans303

작성한 질문수

질문하기