스프링/JPA 활용

jpa 활용 - 설정

born-A 2023. 4. 13. 14:37

롬복을 사용하려면 enable annotation processing에 체크해줘야 한다.

4

롬복이 제대로 실행되었는지 확인

 

resource -> templates -> hello.html

cmd + B : 그곳으로 이동

 

View 환경설정

스프링 부트 thymeleaf viewName 매핑 resources:templates/ +{ViewName}+ .html

렌더링 하지 않는 파일 -> static 폴더

렌더링 할 파일 -> templates 폴더

 

참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.

 

Testcase 작성 중 에러 해결

https://jjunii486.tistory.com/166

 

스프링부트] JUnit Test 에러

java.lang.Exception: No runnable methods at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128) at org.ju

jjunii486.tistory.com

 

package jpabook.jpashop;

import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootTest
@Rollback(false) // 롤백안하고 커밋
public class MemberRepositoryTest {
    @Autowired
    MemberRepository memberRepository;

    @Test
    @Transactional //스프링에서 제공하는 어노테이션을 쓰는게 좋음
    public void testMember() throws Exception {
        //given
        Member member = new Member();
        member.setUsername("memberA");

        //when
        Long savedId = memberRepository.save(member);
        Member findMember = memberRepository.find(savedId);
        //then
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
        Assertions.assertThat(findMember).isEqualTo(member);
        System.out.println("findMember == member : " + (findMember == member));
    }
}

같은 영속성 컨텍스트 안에서는 같은 아이디면 엔티티가 같다.

영속성 컨텍스트에 있네? 하고 1차 캐시에서 가져옴

 

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

스프링 부트를 사용하면 이 라이브러를 추가하면
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

이렇게 뜬다.

 

이 라이브러리는 개발시엔 괜찮지만 배포시에는 성능 테스트를 해봐야한다.