일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 테스트
- appspec
- 컨테이너실행
- appspec.yml
- foreignkey
- application.yml
- WeNews
- docker명령어
- 네이티브쿼리
- ubuntu
- 예약
- AuthenticationEntryPoint
- Query
- 테스트메소드
- 참조키
- MySQL
- 2 > /dev/null
- 추후정리
- 적용우선순위
- 서브쿼리
- 메세지수정
- 메소드명
- 포트
- querydsl
- 검색
- subquery
- 커밋메세지수정
- 외부키
- EC2
- ㅔㄴ션
- Today
- Total
목록Spring Boot/JPA (6)
제뉴어리의 모든것
쿼리 메소드란Spring Data JPA 에서 제공하는 기능으로, 엔티티에 대해 처리할 쿼리 내용을 규칙에 따라 메소드의 명칭과 파라미터로로 정의하여 작업내용을 처리하는 메소드를 생성하는 기능. 주요 특징메소드명칭과 파라미터로 인해 쿼리 자동 생성파라미터로 인한 동적 조건 설정 가능JPQL에 대한 직접 작성 필요 없이 쿼리 자동 생성 예시 1public interface UserRepository extends Repository { List findByEmailAddressAndLastname(String emailAddress, String lastname);}위에 메소드를 아래와 같이 쿼리화 하여 처리select u from User u where u.emailAddress = ?1 and u.l..
IDENTITY VS SEQUENCE IDENTITY 전략은 먼저 Entity를 DB에 저장한 후에, 식별자를 조회해 Entity의 식별자로 할당하는 전략이다. SEQUENCE 전략은 em.persist() 호출 전에 먼저 DB Sequence를 먼저 조회한다. 그 후 조회한 식별자를 Entity에 할당한 후 Entity를 영속상태로 저장한다. 그 후 Transaction을 Commit하여 Flush가 발생할 때 해당 Entity를 DB에 저장한다. 기본적으로 영속성 컨텍스트에 엔티티가 영속되기 위해선 ID값이 필요하다. 그런데 Insert 될 데이터는 아직 ID 값이 존재하지 않는다. 이런 상황에서 IDENTITY는 우선 엔티티의 내용을 repository의 save() 메소드 실행시점에 DB로 바로 ..
전체 항목 구현하려는 기능의 설명 사전 규칙 구현 결론 구현하려는 기능의 설명 아래의 사진처럼 게시물에 작성자가 검색을 위한 태그를 설정하였고, 검색창에서 태그를 입력하면 해당 태그가 설정된 게시물들을 최신 등록순으로 게시물을 페이지네이션 해주는 기능이다. 사전 규칙 클라이언트측 tag를 쿼리파라미터 (쿼리스트링) 의 형태로 서버로 전송한다. ex ) 서버로 전송하는 api http://localhost:8080/api/questions/search?page=1&size=15&tag=안뇽&tag=얼씨구 서버측 1. MySQL DB에 Question 테이블 정의 내용 중요한것은 tags 이다 아래와 같이 태그는 |1번태그||2번태그| 와 같은 형태로 넣을 것이다. (물론 앞서 말했듯이, 태그는 사전 정렬이..
기본 로그 보기 spring.jpa.show-sql= true 포맷에 맞춰서 이쁘게 보기 spring.jpa.properties.hibernate.format_sql= true 쿼리에 바인딩 되는 파라미터까지 로그로 보기 logging.level.org.hibernate.type.descriptor.sql= trace (true라고 나오는곳이 많은데, trace이다)
OneToOne : FetchType.EAGER 가 기본값 ManyToOne : FetchType.EAGER 가 기본값 OneToMany : FetchType.LAZY 가 기본값 ManyToMany : FetchType.LAZY 가 기본값 가만히 보면 합리적인 기본값이다. OneToMany, ManyToMany 는 상대 엔티티가 무조건 N인 관계이다. 나는 One 또는 Many 이지만 (To를 기준으로 앞에쪽이 본인의 Entity를 의미하기 때문에) 상대 엔티티는 무조건 N인 Many여서 Fetch시에 무조건 많은 데이터를 가지고 온다. 그러므로 지연로딩(Lazy)이고 OneToOne, ManyToOne은 상대 엔티티가 무조건 One이기엔 Fetch시에 가지고 와야 하는 데이터가 고작 한개이다. 그러므로..
JPA Auditing이란? Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있습니다. 도메인마다 공통으로 존재한다는 의미는 결국 코드가 중복된다는 말과 일맥상통합니다. 데이터베이스에서 누가, 언제하였는지 기록을 잘 남겨놓아야 합니다. 그렇기 때문에 생성일, 수정일 컬럼은 대단히 중요한 데이터 입니다. 그래서 JPA에서는 Audit이라는 기능을 제공하고 있습니다. Audit은 감시하다, 감사하다라는 뜻으로 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능입니다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 ..