JPA를 처음 적용해보려하니 많이 어렵네요🥲🥲🥲🥲🥲
조금씩 하나씩 해보고있습니다.
이어서 Repository와 Test를 해봤습니다!
저번글에 Entity member클래스에 @GeneragtedValue를 안넣어줬더라구요!
엔터티의 기본 키(primary key) 필드에 대한 값을 자동으로 생성하기 위해 사용됩니다.
oracle에서 사용했던 시퀀스(sequence)
@Id@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "MEMBER_ID")
private Long id;
1. Repository를 생성해줍니다!
@PersistenceContext 어노테이션: 엔티티 매니저를 주입받기 위해 사용됩니다.
insert와 select를 하기위한 메서드를 만들어줍니다.
package start.jpa.repository;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import start.jpa.entity.Member;
@Repository
public class MemberRepository {
@PersistenceContext
private EntityManager em;
public Long save(Member member){
em.persist(member);
return member.getId();
}
public Member find(Long id){
return em.find(Member.class, id);
}
}
2. Test
@Transactional을 하지않으면 오류가 나옵니다!
@Rollback을 하지않으면 데이터가 생성되지않고 Test라서 다시 철회됩니다!
package start.jpa.repository;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
import start.jpa.entity.Member;
@SpringBootTest
class MemberRepositoryTest {
@Autowired MemberRepository memberRepository;
@Test
@Transactional
@Rollback(false)
public void testMember() throws Exception{
Member member = new Member();
member.setName("memberA");
Long saveId = memberRepository.save(member);
Member findMember = memberRepository.find(saveId);
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
Assertions.assertThat(findMember.getName()).isEqualTo(member.getName());
}
}
결과확인!
잘 들어간것이 확인되었습니다!
'코딩기록 저장소 🐕 > 스스로 프로젝트와 연습' 카테고리의 다른 글
프로젝트(SpringBoot)에 JPA적용해보기3 ☺️ (0) | 2024.05.17 |
---|---|
JPA P6spy 사용해보기🫡 (0) | 2024.05.10 |
프로젝트(SpringBoot)에 JPA적용해보기😌 (0) | 2024.05.06 |
카카오 지도 API(2) (0) | 2024.05.02 |
카카오 지도 API 사용해보기 (0) | 2024.04.29 |