jpql
쿼리를 통해 값 찾아오기
package jpql;
import javax.persistence.*;
import java.util.List;
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();
em.persist(member);
// TypedQuery: 반환 타입이 명확한 경우 사용
TypedQuery<Member> query = em.createQuery("select m from Member m", Member.class);
// Query: 반환 타입이 명확하지 않을 때 (userName: String, age: int)
Query query2 = em.createQuery("select m.userName, m.age from Member m");
//.getResultList(): 결과가 하나 이상일 때, 리스트 반환. 결과가 없으면 빈 리스트 반환
List<Member> members = em.createQuery("select m from Member m where m.id>1", Member.class)
.getResultList();
//.getSingleResult(): 결과가 정확히 하나, 단일 객체 반환. 결과가 하나 이상 혹은 없는 경우 에러 발생
Member singleResult = em.createQuery("select m from Member m where id = 100", Member.class)
.getSingleResult();
tx.commit();
} catch (Exception e) {
tx.rollback(); // 오류 발생 시 롤백
e.printStackTrace(); // 에러 내용 출력
} finally {
//종료
em.close();
}
emf.close();
}
}
파라미터 바인딩
Member result = em.createQuery("select m from Member m where m.username= :username", Member.class)
.setParameter("username", "member1") // 파라미터 바인딩 (username에 member1 대입)
.getSingleResult();
'Spring > JPA' 카테고리의 다른 글
JPA- 페이징 (0) | 2023.05.13 |
---|---|
JPA- 프로젝션 (0) | 2023.05.12 |
JPA- 값 타입 컬렉션 (0) | 2023.04.30 |
JPA- 값 타입의 비교 (0) | 2023.04.30 |
JPA- 값 타입과 불변 객체 (0) | 2023.03.23 |