본문 바로가기

카테고리 없음

JPA

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을 사용하면 된다.