분류 전체보기

Spring/카테캠 - TIL

카테캠 4주차 과제 중 문제 - 해결 (유효성 검사, Mockito 인자+anyInt, UserDetails 직접 주입)

@NotEmpty, @NotBlank 문자열에만 적용이 된다. @NotNull 기본타입에는 적용되지 않는다. 기본 타입은 java에서 기본값으로 초기화되기때문이다. @NotNull은 참조 타입에서만 적용된다. int 대신 Integer로 선언하면 적용이 됨을 확인할 수 있다. Collection은 @Valid로 유효성 검사가 불가능하다. @PostMapping("/carts/add") public ResponseEntity addCartList(@RequestBody @Valid List requestDTOs, Errors errors, @AuthenticationPrincipal CustomUserDetails userDetails) { customCollectionValidator.validate(r..

Spring/카테캠 - TIL

카카오테크캠퍼스 : 4주차 과제

카카오 테크 캠퍼스 2단계 - BE - 4주차 클론 과제 과제명 1. 컨트롤러 단위 테스트 과제 설명 1. 컨트롤러 단위테스트를 작성한뒤 소스코드를 업로드하시오. 2. stub을 구현하시오. 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! 컨트롤러 단위테스트가 구현되었는가? Mockito를 이용하여 stub을 구현하였는가? 인증이 필요한 컨트롤러를 테스트할 수 있는가? 200 ok만 체크한 것은 아닌가? (해당 컨트롤러에서 제일 필요한 데이터에 대한 테스트가 구현되었는가?) 모든 요청과 응답이 json으로 처리되어 있는가? 작성한 코드 설명 ✅ BDDMockito를 이용한 Controller 단위 테스트 수행 ✅ @Valid로 유효성 검증 코드 ..

Spring/카테캠 - TIL

4주차 강의 : DTO 유효성 검사, Custom Exception, Controller와 Service의 책임, OSIV

3주차 과제 리뷰 Repository 테스트- 과제의 목표 1. Repository 테스트는 편리하다. 프로그램을 만들지 않아도 Repository 테스트가 가능하다. 2. 좋은 코드를 찾아낼 수 있다. 정상! 이미 만들어져있다. setUp 테스트 전 실행하는 코드 teardown 테스트가 종료된 후 실행되는 코드 dummy data 한 곳에 모아넣기 📌 테스트 시에 Log4j 사용하지 말기! Build 안됨 요청 DTO (Data Transfer Object) 유효성 검사 소프트웨어 개발에서 DTO 객체의 데이터가 요구사항에 맞는 유효한 값인지 확인하는 과정을 말한다. DTO는 주로 데이터 전송을 위해 사용되는 객체이다. 사용자 인터페이스(UI)와 비지니스 로직 간의 데이터 전달을 담당한다. DTO 생..

Spring/카테캠 - TIL

카테캠 : 2주차 코드 리뷰

코드 리뷰 안녕하세요 멘토님! :) 작성한 코드에 대해 부족한 점, 잘못된 점, 잘한 점 등 아낌없이 조언해주시면 감사드리겠습니다! 😊 코드 작성하면서 어려웠던 점 Restful한 API 설계 방법에 대해 생각해보는 시간을 가졌습니다. MockMvc를 사용한 테스트 방법을 배우는 시간을 가졌습니다. DTO를 잘 작성하는 방법에 대해 생각해보는 시간을 가졌습니다. 로그인 API에서 헤더에 Bearer 토큰을 포함하지 않으면, 인증되지 않은 사용자로 로그인이 막히게 되어있습니다. 하지만 토큰은 로그인 시마다 새롭게 부여되기때문에, 인증 방법에 대해 이해하기 어려웠습니다. ✅ 우선 저는 헤더에 Bearer 토큰이 존재하면 인증되도록 작성했는데, 올바른 방법이 아닌 것 같아 Spring Security를 공부해..

Spring/카테캠 - TIL

TIL [0714] : 3주차 과제 수행

과제명 1. 레포지토리 단위테스트 과제 설명 1. 레포지토리 단위테스트를 구현하여 소스코드를 제출하시오. 2. 쿼리를 테스트하면서 가장 좋은 쿼리를 작성해보시오. 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! 레포지토리 단위테스트가 구현되었는가? 테스트 메서드끼리 유기적으로 연결되지 않았는가? (테스트는 격리성이 필요하다) Persistene Context를 clear하여서 테스트가 구현되었는가? (더미데이터를 JPA를 이용해서 insert 할 예정인데, 레포지토리 테스트시에 영속화된 데이터 때문에 쿼리를 제대로 보지 못할 수 있기 때문에) 테스트 코드의 쿼리 관련된 메서드가 너무 많은 select를 유발하지 않는지? (적절한 한방쿼리, 효율적..

Spring/Spring 개발 상식

즉시 로딩과 지연 로딩(+프록시), Fetch Join, Join

FetchType 연관된 객체를 언제 가져올 것인지를 정한다. 즉시(Eager)와 지연(Lazy)가 있다. FetchType.EAGER : @XXToOne에서 FetchType의 기본 값이다. FetchType.LAZY : @XXToMany에서 FetchType의 기본 값이다. 즉시 로딩 @ManyToOne(fetch =FetchType.EAGER) //@ManyToOne은 기본 fetch가 Eager이므로 () 생략가능 private Product product; FetchType.EAGER 연관관계에 있는 모든 개체를 join하여 가져온다. JPQL : 즉시 가져오므로 연관관계의 객체 수가 N개일때 N+1 조회(select) (EntityManager.find()는 최적화 되므로 N+1 문제 발생 ..

Spring/Spring 개발 상식

JDBC, MyBatis, JPA

JDBC(Java Database Connectivity) Java 애플리케이션과 데이터베이스간의 연결과 데이터베이스 작업을 수행하는데 사용된다. JAVA 표준 API이다. JDBC 드라이버 Java에서 날린 SQL 쿼리에 프로토콜을 적용시킨 후 DB에 쿼리를 날리고, 그 응답을 프로토콜에 맞춰 파싱하여 Java로 전달한다. ✅ DBMS 별로 알맞은 드라이버가 필요하다. Object Mapping => JDBC를 사용하면 개발자는 직접 SQL 쿼리를 작성하고 실행하며, 결과로 얻은 ResultSet을 필요한 객체에 직접 매핑(Object Mapping) 해야한다. JDBC 코드 public class UserDAO { private final DataSource dataSource; public User..

Spring/Spring 개발 상식

@Builder와 @Getter, @Setter

@Builder 생성자처럼 객체를 생성하지만 생성자보다 좀 더 편리하다. Builder 패턴 vs 생성자 //생성자 Person p = new Person("Kim", "Female", 25); //빌더 패턴 Person p = Person.builder() .name("Kim") .gender("Female") .age(25) .build(); ✅ 생성자보다 파라미터를 파악하기 쉽다 (가독성이 뛰어나다). ✅ 생성자는 정해진 파라미터 순서대로 값을 넣어야하지만, 빌더 패턴은 순서와 상관없이 필드 이름으로 값이 설정된다. Builder 사용 방법 직접 Builder를 구현하는 방법도 있으나, Lombok의 @Builder 어노테이션을 사용하면 편리하다. 직접 Builder 구현하는 방법 import ja..

mint*
'분류 전체보기' 카테고리의 글 목록 (19 Page)