본문 바로가기

Java & Kotlin/Spring Data15

[QueryDSL] QueryDSL 기본문법 QueryDSL 기본문법 기본적인 조회 Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fetchOne(); QueryDSL을 이용한 기본적인 where절을 이용한 조회이다. QMember와 같이 QType 클래스를 static import하여 사용하면 간결한 코드를 구성할 수 있다. 별칭을 다르게 두어야 한다면 새로 선언하자. 검색조건 Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.between(10, 30))) .fetchOne(.. 2022. 5. 11.
[QueryDSL] QueryDSL 시작하기 QueryDSL 시작하기 JPA와 Spring Data Jpa를 사용하면서 동적인 쿼리를 더 잘 사용하기 위해 QueryDSL을 배우기로 했다. JPQL을 사용하는 것과 다르게 QueryDSL을 사용하면 몇가지 이점이 있다. 쿼리를 문자가 아닌 코드로 작성하기 때문에 compile시점에 에러를 잡을 수 있다. 쉽고 간결하다. 형태가 쿼리와 비슷하다. 쿼리(데이터)를 조회하는 데 기능이 특화되어 있다. 프로젝트 설정하기 build.gradle buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency-management' versio.. 2022. 5. 10.
[JPA] UniqueConstraint와 Embedded field UniqueConstraint와 Embedded field JPA를 이용해 Entity 구성 중 Embedded로 구성된 필드와 함께 Unique 제약조건을 사용해야 하는 상황이 생겼다. 문제 발생 2022-05-07 15:03:12.463 ERROR 9907 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create unique key constraint (work_date, staff_id) on table work: database column 'work_date' not found. Make sure that you use the.. 2022. 5. 7.
[JPA]영속성 전이 CASCADE 영속성 전이 CASCADE JPA를 사용하면서 CASCADE 옵션은 repository의 save, delete 메서드를 한번이라도 덜 쓰게 해주기에 최대한 활용할 수 있게 노력하는 편이다. 매번 책으로 확인하기보다 한번 제대로 정리하려 한다. CASCADE란? 영속성 전이(CASCADE): 특정 엔티티를 영속상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때에 사용하는 기능 CascadeType으로 ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH가 존재한다. ALL: 모두 적용 PERSIST: 영속 MERGE: 병합 REMOVE: 삭제 REFRESH: REFRESH DETACH: DETACH 주로 @OneToXXX연관관계에 사용한다. @OneToXXX(Ca.. 2022. 4. 21.
[MyBatis] 동적쿼리(동적 태그) [MyBatis] 동적쿼리(동적 태그) MyBatis를 이용해서 같은 형태의 분류만 다른 쿼리를 사용해야 할 때 id만 다르게 쿼리를 여러개 작성해야 할 때가 있다. 이러할 때에는 동적 태그를 이용해서 하나의 쿼리문으로 여러 경우의 다른 쿼리를 전송할 수 있다. MyBatis의 동적 태그에는 if, choose(when, otherwise), where, trim, foreach가 있다. [ if ] 는 의 형태로 작성한다. 검색 조건의 type항목이 Title일 때 예시 TITLE LIKE '%'||#{keyword}||'%' [ choose ] 는 과 와 함께 사용하며 태그 안에서 그리고 의 형태로 작성한다. 검색 조건의 type항목이 Title일 때, Content일때, Writer일때와 그 외의 .. 2021. 5. 13.
[JSP] MyBatis [JSP] MyBatis 기존의 JSP에서 데이터베이스와의 통신을 하려면 JDBC를 이용하여 자바를 꼭 거쳐야 했다. 따라서 자바에서 불가피하게 SQL코드가 작성되었고, 자바와 SQL이 섞이다 보면 코드가 길어지고 섞여 유지보수와 분업이 쉽지 않아진다. 이러한 불편함을 해소하기 위해 myBatis를 이용한다. myBatis 구조 myBatis는 기존의 JDBC방식과는 달리 sQL문을 XML파일에 작성함으로써 코드가 줄어들고, SQL문 수정이 편해진다. 또한 DBCP를 사용하여 커넥션을 여러 개 생성하기 때문에 JDBC만 사용하는 것 보다 작업 효율과 가독성이 좋아진다. ibatis는 2.5버전이며 JDK4버전 이상에서 사용가능하다. MyBatis는 3.0버전이며 JDK5버전 이상에서 지원한다. ibati.. 2021. 3. 15.