🌱 오늘의 주제 : JPA - 메소드 종류
🌱 조회 메소드 종류
🌱 조회 쿼리 메소드에 붙일 수 있는 키워드들
🌱 Native 쿼리로 조회
@Query(value="select * from post where subject= :subject", nativeQuery=true)
List<Post> findBySubject(@Param("subject") String subject);
🌱 데이터 Insert , update, delete
데이터 Insert
Entity 객체 정의
@ToString
@Getter
@Builder(toBuilder = true) // 필드 세팅, toBuilder=true: 기존 객체에 일부 필드값만 변경 가능
@NoArgsConstructor // 파라미터 없는 생성자
@AllArgsConstructor // 모든 필드 있는 생성자
@Table(name = "post") // 테이블명과 클래스명이 동일하면 생략 가능
@Entity // DB테이블 필수!
public class Post {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) // MYSQL auto_increment
private int id;
@Column(name="userId")
private int userId;
private String subject;
private String content;
@Column(name="imagePath")
private String imagePath;
@UpdateTimestamp // 현재시간 디폴트값
@Column(name="createdAt", updatable = false) // insert시 최초 시간만 넣고 시간 수정 안되게
private LocalDateTime createdAt;
@UpdateTimestamp // 현재시간 디폴트값
@Column(name="updatedAt")
private LocalDateTime updatedAt;
}
Insert
save(Entity)
postRepository.save(Post.builder()
.userId(1)
.subject("제목123")
.content("내용123")
.build());
데이터 업데이트
조회 후 save(Entity)
Post post = postRepository.findById(16L).orElse(null);
post = post.toBuilder() // 기존 내용은 그대로
.content("내용변경")
.updatedAt(LocalDateTime.now())
.build();
postRepository.save(post); // 데이터 있으면 수정
데이터 삭제
delete(Entity)
// 방법 1)
Post post = postRepository.findById(15L).orElse(null);
if (post != null) {
postRepository.delete(post);
}
// 방법 2)
Optional<Post> postOptional = postRepository.findById(12L);
postOptional.ifPresent(p -> postRepository.delete(p));
'JPA' 카테고리의 다른 글
JPA - 엔티티 매핑 (0) | 2023.07.27 |
---|---|
JPA - 영속성 관리 (0) | 2023.07.18 |
JPA - JPA 소개 (0) | 2023.07.11 |
JPA - Optional 클래스 (0) | 2023.06.03 |
JPA - @Transactional 이란? (0) | 2023.06.03 |