spring data jpa : jpa vs spring-data-jpa
This commit is contained in:
@@ -21,6 +21,8 @@ repositories {
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7'
|
||||
|
||||
compileOnly 'org.projectlombok:lombok'
|
||||
runtimeOnly 'com.h2database:h2'
|
||||
annotationProcessor 'org.projectlombok:lombok'
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.example.springdatajpa.entity;
|
||||
|
||||
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;
|
||||
|
||||
protected Member() {
|
||||
|
||||
};
|
||||
|
||||
public Member(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.example.springdatajpa.repository;
|
||||
|
||||
import com.example.springdatajpa.entity.Member;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.example.springdatajpa.repository;
|
||||
|
||||
import com.example.springdatajpa.entity.Member;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface MemberRepository extends JpaRepository<Member, Long> {
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
18
spring-data-jpa/src/main/resources/application.yml
Normal file
18
spring-data-jpa/src/main/resources/application.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:h2:tcp://localhost/~/Desktop/study/Study/spring-data-jpa
|
||||
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
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.example.springdatajpa.repository;
|
||||
|
||||
import com.example.springdatajpa.entity.Member;
|
||||
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;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
@Transactional
|
||||
@Rollback(value = false) // 롤백 false
|
||||
class MemberJpaRepositoryTest {
|
||||
|
||||
@Autowired MemberJpaRepository memberJpaRepository;
|
||||
|
||||
@Test
|
||||
void testMember() {
|
||||
Member member = new Member("memberA");
|
||||
|
||||
Member savedMember = memberJpaRepository.save(member);
|
||||
|
||||
Member findMember = memberJpaRepository.find(savedMember.getId());
|
||||
|
||||
assertEquals(findMember.getId(), member.getId());
|
||||
assertEquals(findMember.getUsername(), member.getUsername());
|
||||
assertEquals(findMember, member); // findMember == member : 같은 트랜잭션 안에서는 영속성 컨텍스트 동일성 보장
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.example.springdatajpa.repository;
|
||||
|
||||
import com.example.springdatajpa.entity.Member;
|
||||
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;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@SpringBootTest
|
||||
@Transactional
|
||||
@Rollback(value = false)
|
||||
public class MemberRepositoryTest {
|
||||
|
||||
@Autowired MemberRepository memberRepository;
|
||||
|
||||
@Test
|
||||
void testMember() {
|
||||
Member member = new Member("memberA");
|
||||
|
||||
Member savedMember = memberRepository.save(member);
|
||||
|
||||
Member findMember = memberRepository.findById(savedMember.getId()).get();
|
||||
|
||||
assertEquals(findMember.getId(), member.getId());
|
||||
assertEquals(findMember.getUsername(), member.getUsername());
|
||||
assertEquals(findMember, member); // findMember == member : 같은 트랜잭션 안에서는 영속성 컨텍스트 동일성 보장
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user