스프링이 바로 띄워지는 것이 아닌 그라들을 통해 띄워지면 [Test worker] 와 함께 느려진다.
해결방법 : 설정- 빌드-그라들 - 그라들로 셋팅된값을 인텔리제이로 변경해주면 그라들을 통하지 않고 띄워져 빠르다.
롬복 설정 시
설정 - annotation Processors 검색 - Enable annotation processing클릭 설정
자주 사용하는 옵션
예
ls -alrth
숨김파일을 포함한 모든 파일을 나열할때 , 내림차순 정렬, 수정시간을 기준 정렬을 통해 자세히 출력한다.
또한 파일의 크기를 해석하기 편하게 출력한다.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
# 객체를 보고 자동으로 테이블 생성 여부. 생성 - create, 비생성 - none
# 테스트이기 때문에 create로 설정하며
# 실제로는 none 으로 합니다. create이면 기존의 테이블을 전부 밀어버립니다.
properties:
hibernate:
show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
# 콘솔창에 파라미터 값을 보고 싶을때 주로 개발할때, 실전에서는 성능저하 가능성 고려하여 사용해야함. 하지만 보기 불편하여 좀더 깔끔하게 파라미터 값을 보여주기위해서는
# 아래 코드는 주석 처리후
# build.gradle 에
# implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7' 외부라이브러리 추가하면 깔끔하게 파리미터값을 보여준다.
# org.hibernate.type: trace
# show_sql : 옵션은 System.out 에 하이버네이트 실행 SQL을 남긴다.
# org.hibernate.SQL : 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다.
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
//h2사용
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
//쿼리 파라미터를 로그로 남기는 외부 라이브러리는 시스템 자원을 사용하므로,
// 개발 단계에서는 편하게 사용해도 된다. 하지만 운영시스템에 적용하려면 꼭 성능테스트를 하고 사용하는 것이 좋다.
// 부트 3.0 에서는 지원하지 하도 별도의 파일 및 추가 설정해야함.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
import com.example.datajpa.entity.Member;
import org.springframework.transaction.annotation.Transactional;
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;
@SpringBootTest
@Transactional // 테스트가 끝난후 데이터를 롤백하기 위해
@Rollback(false) // 만약 롤백을 원하지 않을경우엔 이 어노테이션을 사용함, 실전에서는 ! 사용 노노!
class MemberJpaRepositoryTest {
@Autowired
MemberJpaRepository memberJpaRepository;
@Test
public void testMember(){ //public 생략가능
Member member = new Member("memberA");
Member savedMember = memberJpaRepository.save(member);
Member findMember = memberJpaRepository.find(savedMember.getId());
assertThat(findMember.getName()).isEqualTo(member.getName());
assertThat(findMember.getId()).isEqualTo(member.getId());
assertThat(findMember).isEqualTo(member);
}
}
참고 : 김영한 강의 Spring Data Jpa