JPA 활용1 - 프로젝트 환경 설정

기석·2022년 5월 12일
0
post-thumbnail

스프링 부트와 JPA 활용1 강의를 듣고 정리한 내용입니다.

프로젝트 환경 설정하는 내용은 솔직히 포스팅하지 않고 넘어가려 했는데
기록해두면 다른 프로젝트를 만들 때 참고가 될 것 같아 적으려 한다.

목표

  • start.spring.io
  • 라이브러리
  • 인텔리제이 환경설정
  • JPA, DB 설정

start.spring.io

우선 시작은 프로젝트를 만드는 것이다.
https://start.spring.io/

사이트에서 강의에서 사용하는 라이브러리들을 추가하고 설정을 완료한 모습이다.
각 라이브러리가 어떤 역할을 하는지, 어떤 기능을 제공하는지 태그와 설명으로 잘 쓰여져 있다.

GENERATE 버튼을 누르면 해당 설정과 라이브러리들을 사용할 수 있게 구성된 프로젝트를 zip으로 받을 수 있다.
압축을 해제하고 build.gradle을 인텔리제이로 실행하면 된다.


인텔리제이 환경설정

먼저 롬복을 사용하기 위해 intellij에서 설정 해야하는 부분이 있다.

  1. 인텔리제이 상단의 File-Settings를 통해 설정 창을 연다. (Ctrl+Alt+S)
  2. Plugins -> Lombok 플러그인 설치
  3. Build, Excution, Deplyment -> Compiler -> Annotation Processors -> Enable annotation processing 활성화

그리고 개발 편의를 위해 실행 속도가 빠른 IntelliJ IDEA를 선택해 실행하도록 한다.

라이브 템플릿 설정 화면


테스트 코드 코딩중에 보여주셨는데 기억해두면 많이 쓸 것 같다.
특히 Thymeleaf 기본 코드같은거 이걸로 작성해두면 편할듯


DB 설정

application.yaml

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpabook
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create # 실행 시점에 테이블을 drop하고 다시 생성한다.
    properties:
      hibernate:
        format_sql: true

logging:
  level:
    org.hibernate.SQL : debug
    org.hibernate.type : trace

yaml의 들여쓰기는 띄어쓰기 2칸이다.


JPA 코드

Member.java

@Entity
@Getter @Setter
public class Member {
 @Id @GeneratedValue
 private Long id;
 private String username;
 ...
}

MemberRepository.java

@Repository
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);
 }
}

테스트

@RunWith(SpringRunner.class)
@SpringBootTest
class MemberRepositoryTest {
    @Autowired
    MemberRepository memberRepository;
    
    @Test
    @Transactional
    @Rollback(value = false)
    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());
    }
}

나는 JPA 기본편보다 활용1편을 먼저 수강하고 있어서 JPA 관련한 내용들은 정리를 해야겠다.
Spring 입문편에서 간단하게 다뤘던 내용만 기억하고 있다.

  • @Entity
  • @Id
  • @GeneratedValue
  • @PersistenceContext
  • EntityManager
  • @Transactional
  • @Rollback(value = false)

쿼리 파라미터 로그 남기기

JPA를 사용하다보면 다음과 같이 로그를 보여주는데, 이거 말고 실제 쿼리가 궁금한 경우가 있다.

그럴때는
https://github.com/gavlyukovskiy/spring-boot-data-source-decorator
를 참고해 build.gradle에 넣어주면 적용된다.

적용 후 로그

profile
블로그 이사갔어요 https://kiseoky.tistory.com

0개의 댓글