JPA
JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.
(ORM(Object-relational mapping)은 객체와 RDB를 매핑해주는 것을 말한다.
객체는 객체대로 설계하고 RDB는 RDB대로 설계 한 뒤 ORM 프레임워크가 중간에서 매핑해준다.)
JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있고, 개발 생산성을 크게 높일 수 있다.
JPA는 애플리케이션과 JDBC 사이에서 동작한다.
JPA로 구현한 Member
@Entity
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
JPA로 구현한 MemberRepository
public class JpaMemberRepository implements MemberRepository {
private final EntityManager em;
public JpaMemberRepository(EntityManager em) {
this.em = em;
}
public Member save(Member member) {
em.persist(member);
return member;
}
public Optional<Member> findById(Long id) {
Member member = em.find(Member.class, id);
return Optional.ofNullable(member);
}
public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where
m.name = :name", Member.class)
.setParameter("name", name)
.getResultList();
return result.stream().findAny();
}
}
스프링 데이터 JPA
스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술이다.
스프링 데이터 JPA 로 구현한 MemberRepository
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
Optional<Member> findByName(String name);
}
'Spring' 카테고리의 다른 글
Web서버 vs WAS (1) | 2024.07.16 |
---|---|
[스프링 입문] AOP (0) | 2023.01.21 |
[스프링 입문] 스프링 빈과 의존관계 (0) | 2023.01.21 |
[스프링 입문] API (0) | 2023.01.18 |
[스프링 입문] MVC와 템플릿 엔진 (0) | 2023.01.18 |