Java/JPA (8) 썸네일형 리스트형 [JPA] Querydsl 벌크삭제 (2) 테이블의 데이터들이 다대다 관계로 구성되어 있고 하나의 데이터를 삭제할 때 관련된 모든 테이블의 데이터를 삭제하기 위해 QueryDSL 공통로직 생성. (이전방식) 서비스 로직에서 엔티티별 Q클래스 생성 & 쿼리작성https://phyho.tistory.com/315 각 User는 여러 Order를 가질 수 있고, 또한 여러 Post를 가질 수 있음. User 엔티티 삭" data-og-host="phyho.tistory.com" data-og-source-url="https://phyho.tistory.com/315" data-og-url="https://phyho.tistory.com/315" data-og-image="https://scrap.kakaocdn.net/dn/n9Pem/hyX7Y9TJ.. [JPA] 네이티브 쿼리 (조건문) + 오류 보호되어 있는 글입니다. [JPA] findBy~ 일부 필드값만 가져오기 (JPQL, 네이티브쿼리) / (+ 오류) [ User 엔티티 클래스 ]> userId, userName, userEmail, userPwd 네개의 필드를 가지고 있다.import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Column;import javax.persistence.Table;import lombok.Getter;import lombok.Setter;import lombok.NoArgsConstructor;import lombok.AllArgsConstructor;@Getter@Setter@NoA.. [JPA] JPA_existBy~ / Querydsl 성능비교 (+ fetchOne(), fetchFirst()) * 아이디 중복확인 체크로직 두가지 방법으로 실행속도 비교1. JPA Repository 메소드 사용2. QueryDSL 사용 1. JPA Repository _ existBy~ 메소드 * UserRepositorypublic interface UserRepository extends JpaRepository { boolean existsByUserIdAndCode(String userId, String code);} * UserService// 아이디 중복확인 체크 로직// param: String userId, String codeif(UserRepository.existsByUserIdAndCode(userId, code)){ throw new CustomExc.. [JPA] List<Entity> 비교 * 자바 List 비교 참고https://phyho.tistory.com/317 [JS] 배열값 비교 (include, '===') / Java_List 비교* 배열요소 비교 ( include ) const arr = [1, 2, 3, 4, 5];console.log(arr.includes(2)); // true * includes() 함수는 내부적으로 '===' 연산자를 사용하여 요소를 비교하기 때문에 다른 타입은 비교 불가능.const mixedArr =phyho.tistory.com [ Entity 클래스 ]@Entity@Getter@Setter@Builder@NoArgsConstructor@AllArgsConstructorpublic class Entity { private String id.. [JPA] findById, existsById, getById * findById(id)id에 해당하는 엔티티를 반환 (Optional)해당하는 엔티티가 없는경우 'Optional.empty()' 반환 * existsById(id)id에 해당하는 엔티티의 존재여부 반환 (boolean) 해당하는 엔티티가 있다면 첫번재 결과에서 바로 true를 리턴. (아래처럼 최적화된 select 쿼리 실행) Hibernate: select id from table where id=? limit 1 * getById(id)id에 해당하는 엔티티를 반환 (엔티티가 반드시 존재한다고 가정 )해당하는 엔티티가 없는 경우 'javax.persistence.EntityNotFoundException' 예외. [JPA] Querydsl 벌크삭제 Querydsl 을 사용해서 벌크삭제를 해봤다. 아래와 같은 세개의 엔티티 클래스가 있다면, ' User ' , ' Order ', ' Post '=> 각 User는 여러 Order를 가질 수 있고, 또한 여러 Post를 가질 수 있음. User 엔티티 삭제로직을 처음에는 아래처럼 만들었다.(User의 pk가 'userId'와 'userCode'라고 가정. 세세한 로직은 생략.)if (!deleteList.isEmpty()) { List delList = new ArrayList(); for (Map del : deleteList) { String userId = String.valueOf(del.get("userId")); String userCode = Stri.. [Java/Spring] JPA / JPA 어노테이션 / JpaRepository 인터페이스 * JPA ( Java Persistence API ) 객체와 관계형 데이터베이스를 관리하기 위한 자바의 표준 ORM 프레임워크. Hibernate, EclipseLink, OpenJPA 등과 같은 구현체를 사용하여 실제 작업 수행. SQL에 의존하지 않고 데이터에 접근할 수 있으며, 객체 중심 개발 가능. JPQL( Java Persistence Query Language ), Criteria API 지원. * Spring Data JPA JPA를 기반으로 한 Spring 프레임워크의 라이브러리. * ORM (Object-Relation Mapping) : 객체와 데이터베이스 테이블 간의 매핑. [ JPA 어노테이션 ] JPA에서는 entity를 사용하여 객체와 데이터베이스 테이블과의 매핑을 정의하는데.. 이전 1 다음