blog 글들 참조

h2>bin>h2.bat

위와 같이 db연결 할 수 있는게 뜬다. 처음 h2 db생성시 db가 만들어져있지 않으므로 위 사진과 같이 jdbc:h2:~/test 를 jdbc url로 지정해주어서 db를 생성하고, 그 다음부턴 jdbc:h2:tcp://localhost/~/test에 접근한다.
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를 사용하려면 설정파일을 만들어서 넣어주어야 한다.

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

MySQL을 쓰고 싶다면, 위와 같이 선언하면 된다.
“INFO: HHH000206: hibernate.properties not found”? 에러가 떠서 검색해보니 에러를 특정하기 어려워서 try catch문을 통해 에러를 특정시키라고 했다.
그러고 나니까 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>