JPA란 Java Persietence API의 약어로 자바 진영의 ORM 기술 표준이다. 표준 인터페이스이다.
*ORM(Object-Relational Mapping)의 약자로 객체로 연결해준다는 의미이다. SQL언어가 아닌 개발언어로 데이터베이스를접근할 수 있게 해주는 툴이다.
(스프링만큼 넓이와 깊이가 있는 기술이다... 망망대해 돛단배...)
-JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 싱행해준다.
- JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다.
- JPA 를 사용하면 개발 생산성을 크게 높일 수 있다.
@Override
public List<Member> findAll() {
List<Member> result;
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
@Override
public List<Member> findAll() {
List<Member> result = em.createQuery("select m from Member m", Member.class)
.getResultList();
return result;
}
Inline Variable 설정
"selct m form Member m"은
Entity(Member)를 대상으로 조회한 후 selct m form Member as m의 줄임말로 select의 대상인 컬럼이 아니라 객체 자체를(m) 조회한다.
*jpa 주의할점은 데이터를 저장하거나 변경하려고 할땐 항상 Transactional을 서비스 계층에 추가해야 한다.
실무에서 잘 사용하기 위해서는 깊이 있는 공부를 해야한다.
#참고 : 실무에서는 JPA와 스프링 데이터 JPA를 기본으로사용하고, 복잡한 동적 쿼리는 Querydsl이라는 라이브러리를 사용하면 된다. Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적 쿼리도 편리하게 작성할 수 있다. 이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, 앞서 학습한 스프링 JdbcTemplate을 사용하면 된다.