[JPA 기본] 구동 방식

강신현·2022년 7월 6일
0

구동 방식

예제

Member

package hellojpa;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Member {

    @Id
    private Long id;
    private String name;

    // Getter
    public Long getId(){
        return id;
    }

    public String getName(){
        return name;
    }

    // Setter
    public void setId(Long id){
        this.id = id;
    }

    public void setName(String name){
        this.name = name;
    }
}

@Entity

JPA가 관리할 객체임을 명시해야함

@Id

데이터베이스 PK와 매핑

Main

package hellojpa;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        EntityManager em = emf.createEntityManager();

        EntityTransaction tx = em.getTransaction();
        tx.begin();
        
        try {
        	// 등록
            Member member = new Member();
            member.setId(1L);
            member.setName("HelloA");

            em.persist(member);
            
            // 조회
            Member findMember = em.find(Member.class, 1L);
            System.out.println("findMember.id = " + findMember.getId());
            System.out.println("findMember.name = " + findMember.getName());
            
            // 수정
            Member findMember = em.find(Member.class, 1L);
            findMember.setName("HelloJPA");

            tx.commit();
        } catch (Exception e){
            tx.rollback();
        } finally {
            em.close();
        }

        emf.close();
    }
}

주의

  • 엔티티 매니저 팩토리 : 하나만 생성해서 애플리케이션 전체에서 공유해야 한다.
  • 엔티티 매니저 : 쓰레드간에 공유해서는 안된다. (사용하고 버려야 한다)
  • JPA의 모든 데이터 변경 : 트랜잭션 안에서 실행
profile
땅콩의 모험 (server)

0개의 댓글