반응형
데이터베이스에 데이터를 넣어 테스트를 하는 강의를 진행했다.
@Entity
public class Member {
@Id
private Long id;
private String name;
객체와 테이블을 생성하고 매핑을 먼저 해준다.
Entity는 JPA가 관리할 객체이고 Id는 PK설정으로 데이터베이스 PK와 매핑된다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
// 팩토리는웹 서버가 올라오는 시점에 DB당 하나만 생성된다.
EntityManager em = emf.createEntityManager();
// 고객의 요청이 올 때 마다 썼다가. 버렸다가. 반복해서 동작한다. 때문에 쓰레드간에 공유를 하면 안 된다. 사용 후 꼭 버려야한다.
EntityTransaction tx = em.getTransaction();
tx.begin(); //JPA 모든 데이터 변경은 트랜잭션 안에서 진행해야 한다.
주석을 참고하자.
try {
//Member findMember = em.find(Member.class, 1L);
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(8)
.getResultList(); //Member 객체를 대상으로 쿼리를 한다. 즉, 대상이 테이블이 아닌 객체이다. JPQL
for (Member member : result) {
System.out.println("member.name = " + member.getName());
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally {
em.close();
}
emf.close();
}
JPQL에 대해서도 간단한 설명을 들었다.
JPQL은 엔티티 객체를 대상으로 쿼리를 수행하고 SQL은 데이터베이스 테이블을 대상으로 쿼리를 수행한다는 차이가 있다. 즉, JPQL은 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리이다.
이 JPQL은 범위가 좀 넓어서 강의 뒤에서 다시 다룬다고 한다.
자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 공부하였습니다.
반응형
'Data Base > JPA' 카테고리의 다른 글
[JPA] : 준영속 상태 (0) | 2022.03.23 |
---|---|
[JPA] : Flush(), 플러시에 대해서.. (0) | 2022.03.23 |
[JPA] : JPA 영속성 컨텍스트(2) (0) | 2022.03.22 |
[JPA] : 영속성 컨텍스트(1) (0) | 2022.03.21 |
[JPA] : JPA 사용을 위한 프로젝트 셋팅과 간단 설명 (0) | 2022.03.19 |
댓글