본문 바로가기
728x90
반응형

Spring136

Where 다중 파라미터 사용 - 동적쿼리 동적쿼리를 다룰 수 있는 방법 2번째이다. 첫번째는 BooleanBuilder를 사용한 방법이였다. //Where 다중 파라미터 사용 @Test void 동적쿼리_whereParam() { String username = "member1"; Integer ageParam = 10; List result = searchMember2(username, ageParam); assertThat(result.size()).isEqualTo(1); } searchMember2 메서드를 확인해보면 아래와 같다. // 메서드 명으로 쉽게 의도를 알아차릴 수 있다. private List searchMember2(String usernameCond, Integer ageCond) { return queryFactory .. 2022. 10. 12.
BooleanBuilder - 동적 쿼리 쿼리 조건 설정인 where 뒤에 조건을 추가해줄 때 사용한다. // 동적쿼리 @Test void dynamicQuery_BooleanBuilder() { String username = "member1"; Integer ageParam = 10; List result = searchMember1(username,ageParam); assertThat(result.size()).isEqualTo(1); } username 이 member1 , age 가 10 인 회원을 찾는다고 할때, 위와 같이 searchMember1 이라는 메소드를 생성해 작성할 수 있다. searchMember1 메소드는 아래와 같다. private List searchMember1(String usernameCond, Intege.. 2022. 10. 12.
JPQL 과 QueryDsl 의 차이 (기초) 코드 작성에 효율적이며, JPQL 에 없는 큰 장점이 몇가지 있다. 1. 컴파일단계에서 에러를 잡아준다. -> 자바 문법으로 작성하는 QueryDsl 은 컴파일 오류로 잡을 수 있다. 2. 자동완성 기능이 뛰어나다. -> 메서드가 생각이 나지 않을때 자동완성 기능을 쉽게 사용할 수 있다. 3. 동적 쿼리 작성이 효율적이다 -> 아직 학습하지 않아서 다음에 포스팅. Entity 클래스는 생략. JPQL 코드 @Test public void startJPQL() { // member1을 찾아라 String qlString = "select m from Member m " + "where m.username = :username"; Member findMember = em.createQuery(qlString.. 2022. 10. 9.
Querydsl 설정 설정 - gradle 의 빌드 및 테스트 실행 방법에 따라 검증방법이 상이하다. gradle 에 추가하는 방법은 동일 gradle 추가 // Querydsl 추가 시작 implementation 'com.querydsl:querydsl-jpa' implementation 'com.querydsl:querydsl-core' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.persistence:jakarta.persistence-api" annotationProcessor "jakarta.annotat.. 2022. 10. 9.
쿼리메소드 - 정렬처리 정렬처리하는 방법 메소드로도 가능하지만, List findByNameOrderByPrice(String name); 너무 길어지면 보기힘들다는 단점이 있어 파라미터로 생성한다. 그리고, 한가지 조건만이 아닌 여러 조건도 충족할 수 있는 장점이 있다. public interface ProductRepository extends JpaRepository { List findByName(String name, Sort sort); } 테스트 코드 @Test void sortingAndPagingTesT() { Product product1 = new Product(); product1.setName("펜"); product1.setPrice(1000); product1.setStock(100); product.. 2022. 10. 9.
mariadb yml 연결 spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/세션이름 username: 사용자 password: 암호 2022. 10. 8.
Swagger 적용하기 - REST API 명세를 문서화 하는 방법 Swagger - 서버로 요청되는 API 리스트를 HTML 화면으로 문서화 - 서버가 가동되면서 @RestController 를 읽어 API를 분석하여 HTML 문서를 작성한다. API 를 개발하면 명세를 관리해야 한다. 명세 란 , 아래의 내용을 정리한 자료이다. 1. 해당 API가 어떤 로직을 수행하는지 설명 2. 이 로직을 수행하기 위해 어떤 값을 요청하는지 3. 이에 따른 응답값으로는 무엇을 받을 수 있는지 먼저 의존성을 주입해준다. implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger2'.. 2022. 10. 8.
Integer 와 int 차이 게시판(회원) 관련 코드를 작성하고 테스트 과정 중에 궁금증이 생겨 정리하게 되었다. 먼저 정리한 표이다. 타입 종류 초기화 사이즈 변환 int Primitive 자료형 0으로 초기화 4 byte int -> Integer (Boxing) Integer Wrapper 클래스 null 로 초기화 20 byte Integer -> int (UnBoxing) Member.class ... @Column(nullable = false, length = 30) private int age; //나이 ... TestCode 에서 분명 런타임에러가 나야하는데.. 왜 정상작동이 되지 라는 의문이 들었다. 그래서 log를 찍어보았다. //회원저장시 나이가 없으면 오류 @Test void 오류_회원저장시_나이_없음() {.. 2022. 10. 5.
@Builder 빌더패턴 @Builder (빌더패턴) 을 왜 사용하는지, 어떻게 사용하는지 알아보려고 한다. 아주 간단하게 정리했으니, 좀 더 깊이 알고싶으면 다른 블로그를 참고하면 좋을 것 같다. @Builder 는 Lombok 라이브러리를 설치해야만 사용 할 수 있다. 그냥 생성자를 사용하면 될것 같은데 굳이 왜 @Builder를 사용할까?? 예를 들어 어느 개발자가 매개변수의 순서를 바꿀 수 있다. 아래 예를보자 생성자의 매개변수 순서는 title, content 이다. 생성자를 사용하는 순서도 title:"제목입니다" , content:"내용입니다" 로 알맞게 들어갔다. 만약 생성자 매개변수의 순서를 바꾸면 어떻게될까?? 생성자 매개변수 title 과 content 의 순서를 바꾸었다. 생성자를 사용하는 곳에서는 그대로 .. 2022. 10. 1.
728x90
반응형