일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- AOP
- 스프링 핵심 원리
- 백준
- 자바
- JDBC
- 인프런
- java
- kotlin
- db
- pointcut
- Greedy
- JPQL
- Proxy
- 알고리즘
- 김영한
- Thymeleaf
- QueryDSL
- 그리디
- spring
- Exception
- transaction
- springdatajpa
- http
- 스프링 핵심 기능
- Servlet
- SpringBoot
- jpa
- Spring Boot
- Android
- Today
- Total
목록JPA (49)
개발자되기 프로젝트
히스토리 데이터의 경우 db의 특정 데이터가 수정이 되면 해당 값의 복사본은 다른 테이블에 복사해 두는 경우가 있음. 이전에 만든 user에 대한 정보는 중요한 정보로, 데이터의 수정이 이뤄졌을 때 수정된 내역의 히스토리가 필요하닫. 1.UserHistory class User의 수정 History 정보를 담을 클래스를 작성하자. package com.jpa.bookmanager.domain; import lombok.*; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import java.time.LocalDateTime; @Entity @NoArgsConstruct..
Listener : 이벤트를 관찰하고 있다가 이벤트가 발생하면 특정 동작을 진행하는 것을 말한다. Entity Listener는 Entity가 동작하는 몇 가지 방법에 대한 이벤트를 관찰하고 있음. 1. Listener 관련 annotaions @PrePersist Persist, insert method 실행 전(해당 엔티티 저장 전) @PreUpdate Merge method 실행 전(해당 엔티티 업데이트 전) @PreRemove Delete method 실행 전(해당 엔티티 삭제 전) @PostPersist Persist method 실행 후(해당 엔티티 저장 후) @PostUpdate Merge method 실행 후(헤당 엔티티 업데이트 후) @PostRemove Delete method 실행 후..
1. SQL이란? SQL 종류 들어가기에 앖서서 SQL(Structed Query Language, 구조적 질의언어)에 대해서 간략하게 알아보자. SQL은 관계형 DB의 관리시스템의 DATA를 관리하기 위한 만들어진 특수 목적의 프로그래밍 언어로 DDL, DML등이 존재한다. 데이터 정의 언어(DDL ,Data Definition Language) : 데이터베이스 객체들을 생성, 변경, 제거 할 때 사용 (테이블 기준) - CREATE : DB, TABLE 생성 - ALTER : TABLE 수정 - DROP : DB, TABLE 삭제 - TRUNCATE : TABLE 초기화 DML : Data Manipulation Language --> 데이터를 실직적으로 관리하는데 사용되는 언어 - SELECT : ..
1.@Entity Entity란 JPA가 관리하는 클래스로 @Entity를 통해 테이블과 클래스를 맵핑할 수 있다. @Entity //Entity에는 primary key가 꼭 필요함., JPA가 관리하고 있는 객체 @EqualsAndHashCode public class User { @NonNull private String name; @NonNull private String email; private LocalDateTime createdAt; private LocalDateTime updatedAt; @Id @GeneratedValue //자동으로 하나씩 증가함. private Long id; 해당 클래스에서 사용하는 변수를 column으로 대응된다고 보면 된다. 2. @Id @Entity가 지정..
이전에 page에 관련해서 간략히 정리했던 부분이 있다. https://bsh-developer.tistory.com/13 아래처럼 name이 일치하는 entity를 page로 return을 해보자. 참고로 Pageagble은 paging을 요청하는 것을 의미한다. Page findByName(String name, Pageable pageable); Page findByName(String name, Pageable pageable); System.out.println("find by name with paging : " + userRepository.findByName("hyun", PageRequest.of(0,2, Sort.by(Sort.Order.desc("id")))).getContent())..
1.이름으로 top 1 찾기 List findTop1ByName(String name); System.out.println("find top 1 by name : " + userRepository.findTop1ByName("hyun")); where 조건에서 limit가 걸린걸 볼 수 있다. where user0_.name=? limit ? find top 1 by name : [ User(name=hyun, email=hyun@naver.com, createdAt=2021-05-27T20:20:01.032253, updatedAt=2021-05-27T20:20:01.032253, id=1) ] 2. last one 찾기 그러면 혹시 음 findLast1_같은 형식도 가능할까..??? 불가능하다. 대신..
이번엔 bean값과 관련된 keyword를 살펴보자. 1. IS_NOT_NULL List findByIdIsNotNull(); System.out.println("find by id is not null : " + userRepository.findByIdIsNotNull()); id가 primary key 여서... null인 경우가 없다.. 2. in / notIn 자주 사용된다~~~리스트 안에 있는 이름들을 가진 entity를 찾아보자. List findByNameIn(List names); System.out.println("find by name in : " + userRepository.findByNameIn(Lists.newArrayList("hyun", "kim"))); 테스트 결과 해당 ..
앞서 Query Method에서 사용한 예시 외에도 부가적으로 제공하는 키워드가 있다. and, or등 여러 logical keywork가 존재한다. 써보자! 1.And / Or 먼저 And!!!!! email과 name을 둘다 사용해서 찾아보자! --> findByEmailAndName(String email, String name)을 만들들고 테스트! List findByEmailAndName(String email, String name); System.out.println("find by email and name : " + userRepository.findByEmailAndName("hyun@google.com", "hyun")); 테스트 결과를 보면 where 조건에서 email과 name이..