Jpa ORM 강좌 #1

ims·2020년 9월 10일

JPA 프로그래밍

목록 보기
2/6

H2 db 설치

http://www.h2database.com/html/main.html

https://reference-m1.tistory.com/127

blog 글들 참조

h2>bin>h2.bat

위와 같이 db연결 할 수 있는게 뜬다. 처음 h2 db생성시 db가 만들어져있지 않으므로 위 사진과 같이 jdbc:h2:~/test 를 jdbc url로 지정해주어서 db를 생성하고, 그 다음부턴 jdbc:h2:tcp://localhost/~/test에 접근한다.

Maven

maven으로 프로젝트 생성하고 porm.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>org.example</groupId>
    <artifactId>jpa-basic</artifactId>
    <version>1.0-SNAPSHOT</version>
     <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

   // 하이버네이트 설정
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
        </dependency>

	// DB설정
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.200</version> 
            // 이 버전은 다운받은 버전과 동일한 버전이어야 한다.
        </dependency>
    </dependencies>
</project>

Jpa 설정

jpa를 사용하려면 설정파일을 만들어서 넣어주어야 한다.

resources > META-INF > 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">
        <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/~/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>

Database 방언

db마다 선언하는 data type이 다르다. 예를 들면 mysql은 varchar, oracle은 varchar2등, 그래서 여기에 명시를 해주면 jpa쪽에서 알아서 변환해준다.

MySQL을 쓰고 싶다면, 위와 같이 선언하면 된다.

에러

“INFO: HHH000206: hibernate.properties not found”? 에러가 떠서 검색해보니 에러를 특정하기 어려워서 try catch문을 통해 에러를 특정시키라고 했다.

https://stackoverflow.com/questions/19085816/how-to-fix-the-error-info-hhh000206-hibernate-properties-not-found

그러고 나니까 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 오류가 떴고, java11에는 dependency가 없어서 생기는 오류였다. 아래와 같이 dependency를 추가해주니까 됐다.

https://mail.codejava.net/coding/solved-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글