공부기록/JPA

JPA시작

jhs0129 2021. 12. 24. 19:33
320x100
반응형

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 생성 과정

  1. 설정 정보를 상요해서 Entity managerfactory를 생성
  2. Entity managerfactory로부터 Entity manager생성
  3. 사용 후 각각 종료 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

 

320x100
반응형