WEB JAVA SPRING/PROJECT

[Day-3] JPA와 DB설정, 동작확인

sshhhh 2023. 8. 25.

<JPA와 DB설정, 동작확인>

 

 

#파일구조

application.yml

spring: #띄어쓰기 제대로.....
  datasource: #2칸
    url: jdbc:h2:tcp://localhost/~/jpashop #4칸 , DB접속 url
    username: sa
    password:
    driver-class-name: org.h2.Driver


  jpa: #2칸
    hibernate: #4칸
        ddl-auto: create #6칸
    properties: #4칸
        hibernate: #6칸

  # show_sql: true #8칸
          format_sql: true #8칸
logging.level: #없음
  org.hibernate.SQL: debug #2칸
  org.hibernate.type: trace #2

 

 

MemberRepository

@Repository  //==DAO
public class MemberRepository {

    @PersistenceContext
     EntityManager em; //엔티티 매니저를 주입해준다.


    //아이디 정보 저장
    public Long save(Member member){
        em.persist(member);
        return member.getId();
    }

    //아이디 조회
    public Member find(Long id){
        return em.find(Member.class ,id);
    }


}

 

여기서 테스트코트 작성

테스트 코드 작성 : shift + ctrl + t

 

 

MemberRepositoryTest

@RunWith(SpringRunner.class) //spring과 관련된 test를 하겠다
@SpringBootTest
public class MemberRepositoryTest {

    @Autowired
    MemberRepository memberRepository;

    @Test
    @Transactional //entity 매니저를 통한 데이터 변경은 트랜잭션안에서 이루어져야 하기 때문에 꼭 넣기 (스프링으로 import)
    @Rollback(false)
    public void testMember() throws Exception {

        //given : set한 member를 가지고
        Member member = new Member();
        member.setUsername("memberA"); //set

        //when : 저장하고, 찾으면
        Long saveID = memberRepository.save(member); // ctrl + alt + v
        Member findMember =memberRepository.find(saveID);

        //then(검증)
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());

        Assertions.assertThat(findMember).isEqualTo(member); //true id값이 같으면 같은 엔티티로 인식
        System.out.println("findMember ==member " + (findMember ==member));

    }
}

 

성공

 

 

근데 데이터가 없다..

롤백 해서 안뜬거  ->@Rollback(false) 추가

뜬다..

 

 

Assertions.assertThat(findMember).isEqualTo(member); //true id값이 같으면 같은 엔티티로 인식

 

같은거라 select도 안함

 

 

#쿼리 파라미터 로그남기기

->(?, ?) 로 남는거..헷갈려서 SQL 실행 파라미터를 로그로 남긴다.

 

application.yml에서 org.hibernate.type: trace 추가 시&amp;amp;nbsp;

 

이것보다 더 편리하게 보고싶다면

 

build.gradle에 

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' 추가 후 새로고침

 

 

강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard

댓글