분류 전체보기510 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. RestApi 게시판 CRUD 만들기 (4) - PostMan 게시글 등록 - 2개 게시글 전체 조회 - 2건 게시글 1건 조회 - id=1 게시글 수정 ( 제목1 -> 제목1변경 / 내용1 -> 내용1변경 ) 게시글 삭제 - id =2 -> 이후 전체 조회시 id =2 미확인 2022. 10. 12. RestApi 게시판 CRUD 만들기 (4) - Controller Test Controller 테스트를 생성 가장 윗부분 설정 부분 @SpringBootTest @AutoConfigureMockMvc class PostControllerTest { @Autowired MockMvc mockMvc; @Autowired PostRepository postRepository; @Autowired ObjectMapper objectMapper; @BeforeEach void clean() { postRepository.deleteAll(); } } MockMvc를 사용해야 하므로 @AutoConfigureMockMvc 를 선언해준다. MockMvc와 postRespository , String 객체로 만들어주기 위한 ObjectMapper 를 주입시켜준다 @BeforeEach를 이용해.. 2022. 10. 12. RestApi 게시판 CRUD 만들기 (3) - Service Test postServiceTest 를 만들어 테스트 가장 위 설정부분 @SpringBootTest class PostServiceTest { @Autowired PostService postService; @Autowired PostRepository postRepository; @BeforeEach void clean() { postRepository.deleteAll(); } postService 와 PostRepository 를 주입받는다. @BeforeEach를 이용해 각 테스트 시작 전 postRepository를 모두 초기화(삭제) 해준다. @Test @DisplayName("게시물_저장_테스트") void create() { CreatePostDto post = CreatePostDto.build.. 2022. 10. 12. RestApi 게시판 CRUD 만들기 (2) - Service , Controller PostService @RequiredArgsConstructor @Service public class PostService { private final PostRepository postRepository; //등록 @Transactional public void create(@RequestBody CreatePostDto createPostDto) { Post post = Post.builder() .title(createPostDto.getTitle()) .content(createPostDto.getContent()) .build(); postRepository.save(post); } //1건 조회 @Transactional(readOnly = true) public PostsResponse .. 2022. 10. 12. RestApi 게시판 CRUD 만들기 (1) CRUD 기능만 있는 게시판을 연습해보았다. 어떤 서비스든 CRUD 기능이 없는 애플리케이션은 없을 것이고, 그만큼 기초가 되는 부분이라고 생각한다. Entity 클래스인 Post.class 에서는 @setter 를 사용하지 않았다. 예외처리, 유효성, 로그인 등 다른 기능은 모두 제외했다. 화면을 구성하지 않았으며 테스트와 포스트맨으로 기능이 정상작동하는지 확인했다 패키지 구조설계는 계층형 패키지가 아닌, 도메인형 패키지 구조로 진행했다. post 밖에 없지만, 복잡한 애플리케이션에서는 도메인형 패키지가 더욱 가독성이 좋다고 생각한다. 계층형은 controller , service , repository 이렇게 나눈다 복잡해지면 많은 controller 패키지에서 내가 원하는 controller 를 찾.. 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. 이전 1 ··· 24 25 26 27 28 29 30 ··· 57 다음