JPA시작
JPA공부함에 있어서 내용은 인프런 김영한님 강의와 책을 참고하여 정리한 것입니다 (필기 및 공부정리용)
https://www.inflearn.com/course/ORM-JPA-Basic#
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔
www.inflearn.com
JPA공부 시작
이전에
JSP
웹을 만드는 것을 공부하면서 DB접근에서 jdbc를 사용하여 개발을 하였는데 너무 반복적인 일만 하고 데이터베이스와 웹을 연결하는 역할 만을 하는 것을 느꼈고 귀찮음이 생겨 찾아보니JPA
를 통해서 더욱 간편하게 개발을 할 수 있다고 알게 되어 공부를 시작 하게 되었다.
JPA란
자바진영의 ORM 기술 표준 명세이다
- ORM: Object Relational Mapping의 약자로 객체와 관계형DB를 매핑 해주는 것
JPA시작
dependency 설정
<dependencies>
<!--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.199</version>
</dependency>
</dependencies>
persistence.xml
JPA를 실행하기 위한 기본 설정파일
<?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"/>
</properties>
</persistence-unit>
</persistence>
Entity manager 생성 과정
- 설정 정보를 상요해서 Entity managerfactory를 생성
- Entity managerfactory로부터 Entity manager생성
- 사용 후 각각 종료
EntityManagerFactory.close()
EntityManager.close()
Entity manager는 Connection과 같이 절대로 공유를 하면 안된다
기존에 JDBC를 사용하면서 DriverManager로부터 connection을 얻고 해당 connection으로 statement를 얻는 것과 비슷하다
데이터 관리
JPA에서는 데이터 변경과정을 transaction이라는 단위 안에서 해야함!!
transaction없이 변경을 하면 예외가 발생한다
table 이름을 지정을 하지 않으면 class명으로 지정
@Entity
: 클래스를 테이블에 매핑한다고 알려줌, 엔티티 클래스 (필수)@Table
: 테이블 정보 알려줌@Id
: primary key에 매핑 필히 해야함 (필수)@Column
: 필드를 칼럼명으로 매핑, 칼럼명이 다르면 사용
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
//transaction 시작
tx.begin();
try {
Member member = new Member();
member.setId(1L);
member.setName("memberA");
em.persist(member);
tx.commit();
}catch (Exception e){
tx.rollback();
}finally {
//transaction 끝
em.close();
}
emf.close();
}
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔
www.inflearn.com