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 = 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) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("hello"); EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction();
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);
transaction.commit(); } catch (Exception e) { transaction.rollback(); } finally { entityManager.close(); } entityManagerFactory.close(); } }
|