๐ŸŒฑย ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ค์ •

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์™€ DB ์„ค์ •, ๋™์ž‘ ํ™•์ธ

application.yml

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

  jpa:
    hibernate:
      ddl-auto: create
    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์„ ๋‚จ๊ธด๋‹ค.

ํšŒ์› ์—”ํ‹ฐํ‹ฐ : Member.java

@Entity
@Getter @Setter
public class Member {

    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;
    private String username;
    private int age;
}

ํšŒ์› JPA ๋ฆฌํฌ์ง€ํ† ๋ฆฌ : MemberJpaRepository.java

@Repository
public class MemberJpaRepository {

    @PersistenceContext
    private EntityManager em;

    public Member save(Member member) {
        em.persist(member);
        return member;
    }

    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}

JPA ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ : MemberJpaRepositoryTest.java

@SpringBootTest
@Transactional
@Rollback(value = false)
class MemberJpaRepositoryTest {

    @Autowired MemberJpaRepository memberJpaRepository;

    @Test
    public void testMember() {
        Member member = new Member("memberA");
        Member savedMember = memberJpaRepository.save(member);

        Member findMember = memberJpaRepository.find(savedMember.getId());

        assertThat(findMember.getId()).isEqualTo(member.getId());
        assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
        assertThat(findMember).isEqualTo(member);
    }
}