spring data jpa : Persistable

This commit is contained in:
haerong22
2021-09-03 01:13:40 +09:00
parent d53f56ba7b
commit 2ba3743d86
4 changed files with 69 additions and 1 deletions

View File

@@ -36,7 +36,7 @@ public class MemberController {
return memberRepository.findAll(pageable).map(MemberDto::new);
}
@PostConstruct
// @PostConstruct
public void init() {
for (int i = 0; i < 100; i++) {
memberRepository.save(new Member("member" + i, i));

View File

@@ -0,0 +1,40 @@
package com.example.springdatajpa.entity;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.domain.Persistable;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Entity
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Item implements Persistable<String> {
// @GeneratedValue 사용하지 않을 경우 -> jpa 기본전략에 의해 persist 가 아닌 merge 수행
@Id
private String itemId;
public Item(String itemId) {
this.itemId = itemId;
}
@CreatedDate
private LocalDateTime createdDate;
@Override
public String getId() {
return itemId;
}
@Override
public boolean isNew() {
// 새로운 객체인지 판단을 생성 날짜 유무로 한다.
return createdDate == null;
}
}

View File

@@ -0,0 +1,7 @@
package com.example.springdatajpa.repository;
import com.example.springdatajpa.entity.Item;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ItemRepository extends JpaRepository<Item, String> {
}

View File

@@ -0,0 +1,21 @@
package com.example.springdatajpa.entity;
import com.example.springdatajpa.repository.ItemRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class ItemTest {
@Autowired
ItemRepository itemRepository;
@Test
void save() {
itemRepository.save(new Item("A"));
}
}