메이븐 프로젝트 설정

 

웹이 필요하면 webapp 선택, 자바 결과값만 간단하게 확인할거면 quickstart 선택

나는 quickstart 선택

 

- quickstart 

quickstart

- webapp

webapp

 

 

메이븐 그룹 Id 와 Artifact Id , 버전 지정하기

* Artifact Id : 프로젝트 파일 명

 

 


아래의 오류가 난다면? Could not write metadata for '/'.

> 이클립스 workspace 폴더안에 .metadata 폴더를 삭제를 한다. 

Could not write metadata for '/'.

 

 


 

 

pom.xml 에서 JPA 하이버네이트와 H2 데이터베이스 라이브러리 넣기

  • JPA 하이버네이트 추가 - 인터페이스 JPA 구현체를 갖고있는 hibernate
  • H2 데이터베이스 추가 - DB접근할 수 있는 드라이버 

라이브러리 추가할 때 버전 중요하다

<!-- 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>
<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>
  <packaging>jar</packaging>

  <name>ex1-hello-jpa</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </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>2.1.214</version>
	</dependency>
	
  </dependencies>

	
</project>

 

 

 

먼저 Hibernate 버전 

<!-- JPA 하이버네이트 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.3.10.Final</version>
</dependency>

하이버네이트 5.3.10 버전을 쓰는 이유는 jpa 혼자 쓰면 버전은 크게 중요하지 않는데 스프링을 엮어서 실핼할 때 hibernate 버전도 맞춰서 사용하면된다. 

 

 

스프링을 사용한다면? 내가 사용하는 스프링 버전에서 사용하는 하이버네이트 버전을 확인해보자 

 

 

스프링부트에서 하이버네이트 버전 확인하는 법

스프링부트 Projects - Spring Boot 들어가서 내가 사용할 버전의 Reference Doc. 들어가보면 

 

hibernate-entitymanager 을 보면 스프링부트에서 사용할 하이버네이트 버전이 나온다 (예시사진이라 버전이 안맞음)

버전에 맞춰 하이버네이트를 사용하면 된다

 

 

그리고 javax.persistence 에서는 jpa인터페이스가 모두 들어가있다.

hibernate는 jpa구현체를 갖고있다

인터페이스= jpa

인터페이스 구현체로 hibernate 라이브러리를 선택했는데 persistence에 들어가면 앞으로 사용할 jpa인터페이스가 모두 들어가있다는 것.

 

 

 

두번째로 H2 라이브러리 버전 

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

h2 다운받을때 <version>2.1.214</version> 버전 맞춰서 다운받는걸 권장한다.

 

 

 

 

 

이제 JPA 설정해보자

 

JPA 설정법

1. src / main / java 에 META-INF 폴더 생성

 

2. META-INF 폴더안에 persistence.xml 파일을 만들어서 프로젝트에 넣는다.

 

persistence.xml 안에 코드 복붙하기

<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>

 

 

<property name="hibernate.hbm2ddl.auto" value="create" /> 에  주석처리를 해제해줘야 DB에 쿼리문이 날려서 값이 저장이됨.

 

 

JpaMain 클래스를 만들어서 Member 객체 생성하고 값 넣어보기

public class JpaMain {

	public static void main(String[] args) {
		//애플리케이션 로딩시점에 딱 하나만 만들어놔야한다
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
		
		//상품을 장바구니에 담기같은 db 커넥션을 얻어서 쿼리를 줘서 종료되는 일련의 과정의 단위를 할때마다 EntityManager를 만들어줘야함
		EntityManager em = emf.createEntityManager();
		
		//jpa는 트랜잭션 안에서 작업해야한다 
		//쉽게 말해 DB 커넥션을 받아놓는다
		EntityTransaction tx = em.getTransaction();
		tx.begin(); //DB 트랜잭션 시작
		
		Member member = new Member();
		member.setId(1L);
		member.setName("HelloA");
		
		//JPA저장
		em.persist(member); 
		
		//커밋
		tx.commit();
		
		em.close();
		emf.close();
	}

}

 

 

실행하면 h2 데이터베이스에 저장이된걸 확인할 수 있다.

 

 

반응형
LIST

'공부' 카테고리의 다른 글

JPA (2) | JPA 구동방식 설명  (0) 2023.09.20
JPA (1) | 자바 컬렉션과 JPA의 등장배경, JPA 장점  (0) 2023.09.08
클래스 멤버  (0) 2023.07.20
추상 메소드와 인터페이스 | 다중상속  (0) 2023.06.27
다형성  (0) 2023.06.22

+ Recent posts