OneK-2
article thumbnail
Published 2023. 1. 21. 16:57
[스프링 입문] JPA Spring

JPA

JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.

(ORM(Object-relational mapping)은 객체와 RDB를 매핑해주는 것을 말한다.

객체는 객체대로 설계하고 RDB는 RDB대로 설계 한 뒤  ORM 프레임워크가 중간에서 매핑해준다.)

 

JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있고, 개발 생산성을 크게 높일 수 있다.

출처:김영한 jpa기본 강의

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
profile

OneK-2

@인문학여행

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그