본문 바로가기
반응형

전체 글242

[Spring Boot] JPQL, QueryDSL 쿼리 작성 JPQL (JPA Query Language) : JPA에서 사용할 수 있는 쿼리 SELECT p FROM 엔티티타입 p WHERE p.엔티티속성 = ?1; 쿼리 메서드 간단한 쿼리문을 작성하기 위해 사용되는 것 (주제 + 서술어) 쿼리 메서드 - 주제 키워드 findBy / readBy / getBy / queryBy / searchBy / streamBy / existsBy : 조회 existsBy : 특정 데이터가 존재하는지 확인 - 리턴타입 boolean countBy : 쿼리 결과 레코드 개수 리턴 deleteBy / removeBy : 삭제한 횟수 리턴 또는 리턴 안함 FirstBy / TopBy : 쿼리 조회 결과값 개수 제한 쿼리 메서드 - 조건자 메서드 Is / Equals : 값의 일치.. 2023. 3. 10.
[Spring Boot] Redis config @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Bean public RedisConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(redisHost, redisPort); } @Bean public RedisTemplate redisTemplate() { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnecti.. 2023. 3. 10.
Redis 사용시 주의사항 Redis 캐싱을 이용하여 성능을 개선하고자 할 때 캐싱 데이터는 update가 자주 일어나지 않는 데이터가 효과적 너무 많은 update 가 일어나는 데이터일 경우 DB와의 Sync 비용 발생 Redis 사용 시 반드시 failover에 대한 고려 ex) 레디스 장애시 DB에서 조회 / 레디스 이중화 및 백업 2023. 3. 9.
shorten url shorten url 주로 모바일 등으로 URL을 공유할 때 줄여서 제공한다. 요청 URL에 대응하는 유니크한 식별자가 필요하다. 방법1. DB의 PrimaryKey를 사용하는 방법 ex) https://dev.com/dir/1022009 단점: url 이 점점 길어질 수 있다. 방법2. base62 사용 ex) https://dev.com/dir/raad21 base64는 "=" 이 포함되어 부적절하다. 영어와 숫자로만 이루어진 62가 적절하다. 2023. 3. 6.
아파치 가상 호스트 VirtualHost conf 설정 정리 가상 호스트 : 아파치에서 접속하는 주소에 따라 폴더를 다르게 지정할 수 있는 기능 한 장비에서 여러개의 도메인을 지정할 수 있다. 아파치 가상 호스트 설정 방법 보통 ~.conf 로 생성하고 httpd.conf 파일에서 해당 파일을 include 한다. 수정 완료 후 서버 재시작해야한다. 실제 회사에서 사용하는 속성들을 예제에 작성하였다. 그동안 모르고 필요한 부분만 수정했는데, 정리하면서 일부 속성들의 의미를 알게 되었다. ServerName www.dev.com ServerAdmin dev@dev.com DocumentRoot "/k3/www" ServerAlias dev.com dev2.com CustomLog logs/access_log ErrorLog logs/error_log SSLEngin.. 2023. 3. 5.
테스트 주도 개발 TDD (Test Driven Development) : 테스트 코드를 먼저 작성한 후 테스트를 통과하는 코드를 작성하는 과정을 반복하는 개발 방식 개발 주기가 짧은 개발 프로세스 개발 주기 단계 1. 실패 테스트 작성 : 실패하는 경우의 테스트 코드를 먼저 작성 2. 테스트를 통과하는 코드 작성 : 테스트 코드를 성공시키기 위한 실제 코드 작성 3. 리팩토링 : 중복 코드를 제거하거나 일반화 테스트 주도 개발 효과 디버깅 시간 단축 생산성 향상 재설계 시간 단축 기능 추가와 같은 추가 구현이 용이 테스트 코드를 작성하는 이유? 문서화 역할 테스트 코드 내 @DisplayName("~하는 테스트") 등 주석을 통해 요구조건을 알 수 있다. 코드에 결함을 발견하기 위함 경계 조건 테스트 코드를 작성하면서 반대 조건도 테스트할 수 있다. 리팩토링 시 안정성 확.. 2023. 3. 4.
[Spring Boot] 테스트 코드 작성 관련 정리 테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링의 리스크가 줄어든다. 애플리케이션을 가동해서 직접 테스트하는것보다 빠르게 진행할 수 있다. 하나의 명세 문서로서의 기능을 수행한다. 몇가지 프레임워크에 맞춰 테스트 코드를 작성하면 좋은 코드를 생산할 수 있다. 단위 테스트 개별 모듈을 독립적으로 테스트하는 방식 테스트 피드백을 빠르게 받을 수 있다. 통합 테스트 다양한 모듈을 결합해 전체적인 로직이 의도한 대로 동작하는지 테스트하는 방식 외부 요인들을 포함하여 애플리케이션이 온전히 동작하는지 테스트한다. 단점 : 테스트 비용이 커진다. Given-When-Then 패턴 Given 테스트에 필요한 변수를 정의하거나 Mock 객체를 통해 특정 상황에 대한 행동을 정의 When.. 2023. 3. 3.
MockMvc를 이용한 테스트코드 작성 스프링 MVC를 모킹하여 웹 어플리케이션을 테스트 할 수 있는 라이브러리 controller 레이어를 테스트 하기 위해 사용 -> 서블릿 컨테이너에서 controller를 실행하지 않고도 컨트롤러에 HTTP 요청을 할 수 있다. 매번 서버를 띄우고 브라우저를 통해 테스트 하지않고 테스트 코드를 통해 검증 가능 MockMvcBuilders 클래스 -> 1. standaloneSetup() : 유닛테스트와 유사하다. -> 2. webAppContextSetup() : 통합테스트를 할 수 있다. 테스트해야하는 것 요청 경로에 대해 적절한 handler method가 호출되는지? 입력 파라미터는 handler method에 잘 전달되는지? model에 설정한 값은 잘 참조 하는지? 요청 결과 페이지는 잘 연결되.. 2023. 3. 1.
Lombok 롬복 - 반복적으로 사용하는 코드 작성을 생략하는 라이브러리 장점 어노테이션 기반으로 코드를 자동 생성하므로 생산성이 높아진다. 반복되는 코드를 생략할 수 있어 가독성이 좋아진다. 유지보수에 용이하다. 단점 자동 생성해주기 때문에 개발자의 의도대로 정확하게 구현하지 못하는 경우도 발생한다. @Getter, @Setter 데이터(모델) 클래스를 생성할 때 반복적으로 사용하는 getter/setter 메서드를 어노테이션으로 대체하는 기능을 제공한다. 생성자 자동 생성 어노테이션 @NoArgsConstructor : 매개변수가 없는 생성자 @AllArgsConstructor : 모든 필드를 매개변수로 갖는 생성자 @RequiredArgsConstructor : final 이나 @NotNull이 설정된 변수를 매개변수로 갖는 생성자 @ToString 필드의 값을 문자열로.. 2023. 2. 22.
728x90
반응형