minlog
article thumbnail
[ JPA ] 동적 쿼리 처리를 해주는 Querydsl 사용해보기
BackEnd/Security · JPA 2023. 4. 16. 00:15

Querydsl JPA 기본 쿼리 메서드의 기능과 @Query 어노테이션만으로 어려운 복잡한 검색 조건을 동적으로 쿼리를 생성해서 처리할 수 있는 기술이다. Querydsl 사용해보기 1. 빌드 추가 라이브러리를 사용하기 위해서 build.gradle 파일에 내용을 추가해주어야 한다. 📑 build.gradle // 1. querydsl 추가 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.10' id 'io.spring.dependency-management' version '1.0.15.RELEASE' //2. querydsl 추가 id "com.ewerk.gradl..

article thumbnail
[ JPA ] Embedded - 재활용 가능한 Entity
BackEnd/Security · JPA 2023. 4. 2. 13:06

Embeddable 반복된 코드는 Embedded JAVA클래스로 따로 생성 해준다. JPA 테이블 생성시 Entity 객체의 필드로 포함이 되는 것을 확인 할 수 있다. 근로기간, 전화번호, 주소 같은 내용들을 Embeddable로 사용할 수 있다. ex) 회원정보 테이블과 회원정보 히스토리 테이블 1. 공통 된 코드 ( Embeddable) 객체 생성. @Embeddable - entity 내부에 선언 할수 있게됨 📑 Address.java @Data @AllArgsConstructor @NoArgsConstructorE @Embeddable public class Address{ private String city; //시 private String district; //구 @Column(name=..

article thumbnail
[ JPA ] @Query ( 쿼리 커스텀 ) - Native Query
BackEnd/Security · JPA 2023. 3. 31. 16:22

@Query 쿼리 메서드의 커스텀 버전이라고 생각할 수 있다. 보통 쿼리 메서드 만으로 일반적인 기능들을 처리할 수 있다. 하지만 다음의 두가지 케이스에서 필요하다. 쿼리메서드의 문제점을 보완해줄 수 있다. 1. 쿼리메서드의 가독성 문제 1) 쿼리메서드의 이름이 길어지는 경우 ex) 카테고리 = null , 이름 =파라미터와 같은것 ,created_at 파라미터 값보다 크거나 같은것, updated_at 파라미터 값보다 크거나 같은 것을 조회 List findByCateqoryIsNullAndNameEqualsAndCreatedAtGreaterThanEqual(String name, LocalDateTime createAt,LocalDateTime updateAt); - 수정 된 소스 : JPQL 을 사..

article thumbnail
[ JPA ] Cascade ( 영속성 전의 ) - 고아제속성
BackEnd/Security · JPA 2023. 3. 31. 14:24

Cascade 영속성 전의 OneToOne, OnToMany, ManyToOne, ManyToMany 등의 연관관계에서 Cascade (*enum) 타입들을 설정할 수 있다. ( * enum : 어떤 값을 사용할수 있는지 예시를 볼수 있다.) @OneToOne, @OnToMany, @ManyToOne, @ManyToMany cascade = CascadeType.속성 defalut 기본값은 아무런 전의가 없는 것이다. PERSIST 생성시만 적용 . 객체가 생성될 때 연관관계에 있는 객체도 함께 생성. MERGE 업데이트시 연관관계가 있는 객체도 함께 수정. REMOVE ⭐ 삭제 시 연관관계가 있는 하위 객체도 함께 삭제된다. (많이 사용하지만 주의해야하는 속성 - 고아제속성 제거와 함께 확인) REFR..

article thumbnail
[ JPA ] Transaction
BackEnd/Security · JPA 2023. 3. 30. 02:19

Transaction Transaction 이란 DB 명령어들의 논리적인 묶음이다. Transaction 이라는 단어를 사용해서 여러가지의 쿼리들을 묶어서 사용하고 있다. ex) 하나의 Transaction : 물건 구매 => 결제 + 주문 1 . ACID 특성 A - 원자성 : 부분적인 성공을 허용하지 않는다. C - 일관성 : 데이터간의 정확성을 맞춘다. I - 독립성 : Transaction 내의 데이터 조작은 다른 Transaction 으로 부터 독립적인 속성을 가진다. D - 영구적 보관 : 데이터는 영구적으로 보관이 된다. 2. 사용방법 - @Transaction 어노테이션 을 사용할 수 있다. 1) DB저장 시점 save 가 되어도 DB에 저장이 되지 않는다. putBookAndAuthor ..