반응형
application.properties를 지우고 application.yml파일 생성
application.yml 내용(띄어쓰기 주의★★★★★)
spring:
#spring아래
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
#spring아래
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
# org.hibernate:type: trace
h2 1.4.200 버전 다운로드 링크
윈도우 설치 버전: https://h2database.com/h2-setup-2019-10-14.exe
윈도우, 맥, 리눅스 실행 버전: https://h2database.com/h2-2019-10-14.zip
데이터베이스 파일 생성 방법
jdbc:h2:~/저장할DB이름(최소 한번)
~/저장한DB이름.mv.db 파일 생성 확인
이후 부터는 jdbc:h2:tcp://localhost/~/저장할DB이름 이렇게 접속
1. Member.java 엔티티생성
package jpabook.jpashop;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter @Setter
public class Member {
@Id
@GeneratedValue
private Long id;
private String username;
}
2. MemberRepository.java : 데이터베이스 자동관리 by 엔티티매니저
package jpabook.jpashop;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Repository
public class MemberRepository {
@PersistenceContext//데이터를 알아서 EntityManager가 넣어줌
private EntityManager em;
public Long save(Member member){
em.persist(member);
return member.getId();//id정도만 조회하는용도
}
public Member find(Long id){//조회하는용도
return em.find(Member.class, id);
}
}
테스트
MemberRepositoryTest.java
package jpabook.jpashop;
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
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
@Transactional //NO EntityManager에러 안뜨려면. 이걸 넣어줘야함
public void testMember() throws Exception{
//given
Member member = new Member();
member.setUsername("memberA");
//when
Long saveId = memberRepository.save(member);//저장하면서 id값 return받음
Member findMember = memberRepository.find(saveId);//저장한 id값으로 find하기
//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));
}
}
쿼리 파라미터 로그 남기기
gradle에 dependencies에 아래 라이브러리를 추가해 주면 된다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
반응형
'Spring > SpringBoot' 카테고리의 다른 글
#4 Spring JPA 지연로딩 + 주의사항 (0) | 2022.04.03 |
---|---|
#3 엔티티 생성 + JPA관계형DB 설계 (0) | 2022.04.03 |
#1 JPA 프로젝트생성, 뷰(thymeleaf), 빌드 (0) | 2022.04.03 |
Spring + 네이버 API 활용(단축URL) (0) | 2022.02.12 |
React 변수 사용법 (0) | 2022.01.28 |