JPA 프로그래밍(기본편) 2 - JPA 설정하기

JPA 프로그래밍(기본편) 2 - JPA 설정하기

Entity 생성하기

Entity 어노테이션을 통해 JPA가 관리하는 객체임을 명시해준다.

@Entity
public class Member {
@Id
private long id;
private String name;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getName() {
return name;
}

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

EntityManagerFactory 생성하기

JPA를 사용하기 위해 persistence.xml에 JPA 설정 정보를 넣어 줬다. 해당 정보를 사용하기 위해서 EntityManagerFactory를 생성해주도록 한다.

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello");

EntityManager 생성하기

EntityManagerFactory를 이용해 EntityManager를 생성해준다.

// EntityManager를 생성한다.
EntityManager entityManager = entityManagerFactory.createEntityManager();

트랜잭션 생성하기

JPA에서 데이터를 변경하는 모든 작업은 트랜잭션 안에서 작업을 진행해야 한다.

// 트랜잭션을 생성한다.
EntityTransaction transaction = entityManager.getTransaction();

데이터 저장하기 (Create)

새로운 Member 객체를 생성하고 EntityManager의 persist 메소드를 통해 영속성 컨텍스트에 저장해준다.

Member member = new Member();
member.setId(1L);
member.setName("HelloA");

// 영속성 컨텍스트에 저장한다.
entityManager.persist(member);

데이터 조회하기 (Read)

저장된 데이터를 조회하기 위해서는 EntityManager의 find 메소드를 이용해 DB에서 저장된 데이터를 불러온다.

Member findMember = entityManager.find(Member.class, 1L);

데이터 수정하기 (Update)

저장된 데이터를 수정하기 위해서는 EntityManager의 find 메소드를 이용해 DB에서 저장된 데이터를 불러오고 정보를 수정해준다. 정보 수정이 끝난 후 persist 메소드를 사용하지 않아도 JPA의 변경 감지를 통해 update가 이뤄진다.

Member findMember = entityManager.find(Member.class, 1L);
findMember.setName("HelloJPA");

데이터 삭제하기 (Delete)

저장된 데이터를 삭제하기 위해서는 EntityManager의 find 메소드를 이용해 DB에서 저장된 데이터를 불러오고 remove 메소드를 사용해 데이터를 삭제해 준다.

Member findMember = entityManager.find(Member.class, 1L);
entityManager.remove(findMember);

JPQL을 이용해 특정 쿼리 작성하기

JPA에서 제공해주는 기본적인 쿼리문외에 다른 여러가지 쿼리를 작성하고 싶은 경우에는 EntityManager에서 제공하는 CreateQuery 메소드를 통해 쿼리를 작성할 수 있다. 이를 JPQL이라 하고 JPQL은 객체를 대상으로 쿼리를 만들어준다.

List<Member> result = entityManager.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(10)
.getResultList();
public class JpaMain {
public static void main(String[] ars) {
// persistence.xml을 이용해
// EntityManagerFactory를 생성한다.
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello");
// EntityManager를 생성한다.
EntityManager entityManager = entityManagerFactory.createEntityManager();
// 트랜잭션을 생성한다.
EntityTransaction transaction = entityManager.getTransaction();

// JPA에서 데이터를 변경하는 모든 작업은 트랜잭션 내에서 이루어져야 한다.
transaction.begin();
try {
Member member = new Member();
member.setId(1L);
member.setName("HelloA");

List<Member> result = entityManager.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(10)
.getResultList();

// 영속성 컨텍스트에 저장한다.
entityManager.persist(member);



// DB에 변경사항을 반영한다.
transaction.commit();
} catch (Exception e) {
transaction.rollback();
} finally {
// EntityManager를 종료시킨다.
entityManager.close();
}
// EntityManagerFactory를 종료시킨다.
entityManagerFactory.close();
}
}
Share