@Entity
@Getter @Setter
public class Member {
@Id
private Long id;
private String name;
}
public class JpaMain {
public static void main(String[] args) {
// xml 설정파일 이름 <persistence-unit name="hello">
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
// transaction 발생
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
// JPQL
// JPA는 쿼리를 짤떄 Table을 대상으로 쿼리를 짜지 않고,
// member 객체를 통해서 쿼리를 짠다.
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5) // 5번 부터
.setMaxResults(10) // 10개 까지 가져온다
.getResultList();
for(Member member : result) {
System.out.println("member.name = " + member.getName());
}
// JPA
// // 회원 조회
// Member findMember = em.find(Member.class, 2L);
// System.out.println("==================================");
// System.out.println("findMember.id : " + findMember.getId());
// System.out.println("findMember.name : " + findMember.getName());
// 회원 수정
// findMember.setName("UpdateUser");
// 회원 삭제
// em.remove(findMember);
// 회원 등록
Member member = new Member();
// 추가
member.setId(3L);
member.setName("UserC");
// persist : db에 저장
em.persist(member);
tx.commit();
}catch (Exception e) {
tx.rollback();
}finally {
em.close();
emf.close();
}
}
}
저장 : persist()
조회: find()
삭제: remove()
변경: 변경은 따로 함수를 호출하기보다는 find를 해서 가져온 객체에서 setter 메서드를 통해 값을 변경하면 commit()호출시 적용되기 전 시스템에서 변경감지를 통해 기존 객체와 차이점을 찾아서 업데이트를 자동으로 해준다.
엔티티(Member.class)
를 대상으로 한다. JPA
가 자동으로 맞춰준다.ansi
가 제공하는 표준 SQL 문법을 모두 제공한다. // JPQL
// JPA는 쿼리를 짤떄 Table을 대상으로 쿼리를 짜지 않고,
// member 객체를 통해서 쿼리를 짠다.
// 회원조회
List<Member> result = em.createQuery("select m from Member as m", Member.class)
//페이징 처리에 대한 부분이 된다.
.setFirstResult(5) // 5번 부터
.setMaxResults(10) // 10개 가져온다
.getResultList();
for(Member member : result) {
System.out.println("member.name = " + member.getName());