Back-end
[Java: JPA] 01. JPA와 환경설정
Kamea
2023. 1. 28. 13:33
JPA 를 사용하는 이유?
기존의 Mybatis 를 사용했을 때의 복잡한 엔티티 매핑문제와 단순 sql 코드 작성 시간을 줄일 수 있기 때문에
생산성 ⬆, 유지보수 용이, 성능, 표준
패러다임의 불일치 해결(상속, 연관관계, 객체 그래프 탐색, 비교)
SQL 중심의 개발에서 객체 중심으로 개발 가능
JPA란?
→ Java Persistance API : 자바 영속성 API
→ Java ORM 표준
✅ ORM이란?
더보기
ORM : Obejct relational mapping → 객체 관계 매핑
ORM 프레임워크가 객체와 관계형 대이터베이스를 중간에서 매핑해준다.
→ JAVA 와JDBC 사이에서 다리 역할
JPA 환경 설정
0. H2Database 설치 후 h2/bin 폴더에서 ./h2.sh 실행
→ localhost:8082 url 입력 후 아래와 같은 화면이 나오는지 확인
→ 연결 버튼을 눌러서 연결이 되었는지 확인(이거 안하면 나중에 오류가 나더라구여...)
1. JAVA Maven Project 생성 : JAVA 8 이상 권장
2. pom.xml에 의존성 추가 : h2 데이터베이스 사용할꺼임
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.10.Final</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
</dependency>
</dependencies>
3. resources 파일 아래에 META-INF 디렉토리 생성 후 persistence.xml 파일 추가
<?xml version="1.0" encoding="utf-8" ?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.2">
<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"/>
</properties>
</persistence-unit>
</persistence>
🔥 해당 속성들과 0번 사진의 데이터베이스 속성들이 일치해야 됨
4. java 폴더 하위에 패키지&클래스 생성 후 main 메서드 빌드 확인
package hello.jpa;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
em.close();
emf.close();
}
}