일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 원시 자료형
- @Query
- springDataJpa
- 스프링 부트
- 스네이크 케이스
- Entity
- Repository 테스트
- 스터디
- @Version
- 테스트 코드
- 디자인 패턴
- 낙관락
- jvm
- OOP
- 비링크
- 공유락
- Java
- Array
- 자료구조
- 비즈니스 로직
- Service 테스트
- 마이크로서비스 아키텍처
- Controller 테스트
- 배열
- 자바
- 배타락
- 파스칼 케이스
- do...while
- DTO
- 트랜잭션 락
- Today
- Total
목록스터디/Spring (15)
menuhwang

JPQL과 @Query JPQL JPQL : JPA Query Language SQL문법과 거의 비슷하다. SQL과 차이점은 테이블이나 컬럼의 이름을 사용하는 것이 아니라 엔티티 객체의 이름과 필드 이름을 사용한다는 것이다. SELECT p FROM Product AS p WHERE p.name = ?1; SELECT 조회할 컬럼 을 선택. 위 예시처럼 엔티티 별칭을 입력하면 전체 컬럼을 조회한다. SELECT * FROM product ... FROM 조회할 엔티티 선택. AS 조회 조건을 정의. AS를 생략하고 SELECT p FROM Product p라고 작성 가능하다. WHERE 조회 조건을 정의. 컬럼 = 값 형식으로 작성한다. @Query 예시 코드 @Query("SELECT p FROM Pr..

정렬과 페이징 정렬 레코드 조회 시 가격 혹은 등록 날짜 등 특정 컬럼을 기준으로 정렬이 필요한 경우가 있다. 쿼리 메서드를 활용하는 방법과 정렬을 위한 객체를 인자로 전달하는 방법이 있다. 쿼리 메서드를 활용하는 방법 List findByNameOrderByPriceAsc(String name); 쿼리 메서드를 활용하는 방법은 메서드 이름이 매우 길어진다는 문제가 있다. 정렬을 위한 Sort객체를 인자로 전달하는 방법을 사용하면 메서드 이름을 짧게 작성할 수 있다. 파라미터로 Sort정보를 받아오는 방법 List products = productRepository.findByNameContains("네스프레소", Sort.by(Sort.Order.asc("name"), Sort.Order.asc("pr..

Controller 단위 테스트 테스트 코드 @WebMvcTest(BoardController.class) @MockBean(JpaMetamodelMappingContext.class) class BoardControllerTest { @Autowired private MockMvc mockMvc; @Autowired private WebApplicationContext webApplicationContext; @MockBean BoardServiceImpl boardService; private static final Long ID = 1L; private static final String AUTHOR = "user"; private static final String TITLE = "Hi"; pri..

Service 단위 테스트 테스트 코드 class BoardServiceTest { private BoardRepository boardRepository = Mockito.mock(BoardRepository.class); private BoardService boardService = new BoardServiceImpl(boardRepository); private final Long ID = 1L; private final String AUTHOR = "user"; private final String TITLE = "Hi"; private final String DESCRIPTION = "Nice to meet you"; private final LocalDateTime CREATED_TIMES..

Repository 단위 테스트 테스트 코드 @DataJpaTest class BoardRepositoryTest { private final String AUTHOR = "user"; private final String TITLE = "Hi"; private final String DESCRIPTION = "Nice to meet you"; private final int INIT_LIKE = 0; @Autowired private BoardRepository boardRepository; @Test public void saveTest() { Board board = Board.builder() .author(AUTHOR) .title(TITLE) .description(DESCRIPTION) .b..

TDD (Test-Driven-Development) 왜 테스트 코드를 먼저 짜는 거야? 코드 짜고 그 뒤에 짜도 되지 않아? TDD의 기대 효과와 개발 사이클에 대해 알아보자. TDD 기대 효과 생산성 향상 1. 계획 테스트 코드를 짜기 위해 목적이 무엇인지, 어떤 출력 값을 기대하는지, 어떤 입력값을 받을 것인지 등등 요구사항에 대해 확실히 파악해야만 한다. TDD 방식에서 테스트 코드는 계획서, 설계도면으로 볼 수 있다. 요구사항에 맞게 계획하고 애플리케이션 코드를 구현하고 테스트를 실행 시는 체계적인 프로세스로 생산성 향상에 도움이 된다. 2. 반복적인 검증 디버깅, 작동 테스트를 위해 애플리케이션을 직접 실행하는 것보다 테스트 코드를 실행하여 테스트 시간을 단축할 수 있다. 또한 리팩토링 후 테..

테스트 코드 테스트 코드 사진 테스트 코드 작성 이유 문제에 대해 미리 발견, 대처할 수 있다. 리팩터링 시 부담이 적다. 문서로서의 역할을 할 수 있다. 문제 발견 및 대처 테스트 코드를 작성하면 발생 가능한 버그나 예외를 미리 예측해서 대비할 수 있고, 비즈니스 로직이 정상적으로 작동하는지 테스트하여 확인할 수 있다. 리팩토링 테스트 코드는 리팩터링 시 든든한 아군이 된다. 테스트 코드 없이 리팩토링하였을 때 정상작동하여도 버그나 예외에 대해 처리가 잘 되어있는지에 대해 신뢰도가 떨어지게 된다. 그리고 리팩토링 후 문제가 발생하면 어디서 문제가 발생하였는지 파악하기 어려워 리팩토링에 부담이 생기기 마련이다. 하지만 테스트 코드를 작성했다면 리팩토링 후 테스트 코드를 실행시켜보는 것만으로도 다양한 상황..

DB (MySql) 사용 및 Entity, Repository 작성 서비스를 제공하기 위해서는 데이터를 DB에 저장 (영속화) 해야만 한다. 유저 정보를 저장하여 로그인할 수 있게 한다거나, 게시물 등록, 도메인에 따라 제품, 강의 영상 등록 등등... Spring Boot에서 DB 연결을 위한 Dependency추가, 설정 방법을 알아보자. 그리고 Entity를 설계하고 Repository, Service를 작성하여 DB에 저장하고 불러오는 방법을 알아보자. SpringBoot 설정 DB에는 많은 종류가 있다. MySql, MariaDB, MongoDB, Oracle 등등... 이 글에서는 MySql를 사용할 것이다. 다른 DB를 사용하는 경우 DB에 맞춰 Dependency 추가 및 Driver 설정..