📌 JPA(Java Persistence API)?
ORM(Object Relational Mapping)이란?
객체와 관계형 데이터베이스를 매핑해 주는 것입니다.
- 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 그 둘 사이 불일치가
존재하는데 ORM이 그것을 해결해 줍니다.
📌 왜 사용해야 하나?
💻 JPA설정
...
@Entity
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
...
}
💻 JPA 회원 리포지토리 생성
public class JpaMemberRepository implements MemberRepository {
private final EntityManager em;
...
public Member save(Member member) {
em.persist(member);
return member;
}
...
public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
...
📌 서비스 계층에 트랜잭션 추가
@Transactional
public class MemberService {
...
💻 JPA를 사용할 수 있도록 스프링 설정 변경
@Configuration
public class SpringConfig {
private final DataSource dataSource;
private final EntityManager em;
public SpringConfig(DataSource dataSource, EntityManager em) {
this.dataSource = dataSource;
this.em = em;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new JpaMemberRepository(em);
}
}
📌 스프링 데이터 JPA(Java Persistence API)?
💻 스프링 데이터 JPA 회원 리포지토리
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
Optional<Member> findByName(String name);
}
📌 스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정 변경
1. 자바 진영의 ORM(Object Relational Mapping) 기술 표준으로 쿼리 문을 사용하지 않고도 데이터베이스에서 데이터를 추가, 수정, 조회, 삭제할 수 있는 기술을 제공하는 DB접근 기술을 무엇이라고 하나요?
2. JPA는 자동으로 쿼리문을 작성해준다.(O/X)
3. JPA가 관리하는 entity라고 명시해 주기 위해 어떤 어노테이션을 붙이나요?
4. JPA에서 엔터티를 관리하는 객체는 무엇인가요?
5. 데이터가 변경되는 서비스 계층에 무엇을 추가해야 하나요?
6. 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있게 해주는 것이 무엇인가요?
7. 스프링 데이터 JPA를 사용하면 JPA리포지토리를 직접 스프링 빈으로 등록할 필요가 없다.(O/X)
8. 코너 회원의 도메인을 만들기 위해 다음의 코드를 작성하고자 합니다. [ ] 안에 들어갈 어노테이션을 작성하세요.
@Entity
public class CornerMember {
[ ]
private Long id;
private String name;
public Long getId() {
return id;
...
}
9. 스프링 데이터 JPA를 사용하여 코너 멤버의 회원가입 메서드를 작성하고자 합니다. 다음을 완성하세요.
...
private final EntityManager em;
...
public Member save(Member member) {
}
```
해당 포스트는 김영한, [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술], (2022, 11월 28일), 섹션 6. 스프링 DB 접근기술 강의를 참고하여 작성하였습니다.
아리
[스프링1] 7장. 테스트 코드 작성하기 (0) | 2023.11.17 |
---|---|
[스프링1] 6. 데이터베이스 연동 (0) | 2023.11.10 |
[스프링 1팀] 5-6장. API를 작성하는 다양한 방법 및 데이터베이스 연동 (0) | 2023.11.03 |
[스프링 1팀] 1장 ~ 4장. 스프링 부트란? + 개발에 앞서 알면 좋은 기초 지식 + 개발환경 구성 + 스프링부트 애플리케이션 개발하기 (0) | 2023.10.13 |
[스프링1] 섹션 4. 스프링 빈과 의존관계 (0) | 2023.09.29 |