코딩기록 저장소 🐕/스스로 프로젝트와 연습

프로젝트(SpringBoot)에 JPA적용해보기2🥲

kimkongmom 2024. 5. 7. 14:10

 

 

 

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());
    }
}

 

 

 

결과확인!

 

 

잘 들어간것이 확인되었습니다!