spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop;
username: sa
password:
driver-class-name: org.h2.Driver # database connection 관련 소스 설정이 완료된다.
jpa:
hibernate:
ddl-auto: create #이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다.
properties:
hibernate:
# show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
# org.hibernate.type: trace
모든 로그 출력은 가급적 로거를 통해 남겨야 한다.
show_sql 옵션은 System.out에 하이버네이트 실행 SQL을 남긴다.
org.hibernate.SQL 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다.
@Entity
@Getter @Setter
public class Member {
@Id @GeneratedValue
private Long id;
private String username;
}
@Repository
public class MemberRepository {
// Shift + Ctrl + T 테스트 코드 생성
// 스프링 부트가 EntityManager (Raw JPA)를 주입
@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);
}
}
@SpringBootTest
class MemberRepositoryTest {
@Autowired MemberRepository memberRepository;
@Test
@Transactional
// EntityManager를 통한 모든 데이터 변경은 Transaction안에서 실행 되어야 한다.
// Test코드 안에서 @Transaction을 작성하면 마지막에 롤백 한다.
@Rollback(false)
public void testMember() throws Exception {
// given
Member member = new Member();
member.setUsername("memberA");
// when
Long aLong = memberRepository.save(member);
Member findMember = memberRepository.find(aLong);
// then
Assertions.assertThat(findMember.getId()).isEqualTo(aLong);
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
// == 비교
// [영속성 컨텍스트]
Assertions.assertThat(findMember).isEqualTo(member);
System.out.println("findMember = " + findMember);
System.out.println("member = " + member);
// 출력
// findMember = jpabook.jpashop.Member@6c2fea95
// member = jpabook.jpashop.Member@6c2fea95
}
}
스프링 부트와 JPA 프로젝트 환경설정
View 환경 설정
thymeleaf 템플릿 엔진
스프링 부트 thymeleaf viewName 매핑
+ 개발에 유용한 라이브러리 추가
H2 데이터베이스 설치
개발이나 테스트 용도로 가볍고 편리한 DB, 웹 콘솔 제공
윈도우 설치 버전: https://h2database.com/h2-setup-2019-10-14.exe
데이터베이스 파일 생성 방법 (최소 한 번, 세션키 유지하여야 생성이 가능하다.)
연결 후
파일 생성 확인 이후
JPA와 DB 설정
application.properties 삭제 -> application.yml 생성
자세한 application 속성 보기
주의
yml파일은 띄어쓰기(스페이스) 2칸으로 계층을 만든다.
따라서 띄어쓰기 2칸을 필수로 적어주어야한다.
예를 들어 아래의 datasource는 spring: 하위에 있고 앞에 띄어쓰기 2칸이 있으므로 spring.datasource가 된다.
동작 하는지 확인
테스트 결과 , 쿼리
쿼리 파라미터 로그 남기기
application.yml -> org.hibernate.type:trace
외부 라이브러리 사용 https://github.com/gavlyukovskiy/spring-boot-data-source-decorator
gradle추가
+ 테스트 코드 자동 완성 커스텀
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다. 초급
www.inflearn.com
'기록 > 스프링 부트 와 JPA 활용' 카테고리의 다른 글