FrameWork35 JPA Auditing으로 생성시간/수정시간 자동화하기 Java8부터 LocalDate와 LocalDateTime이 등장 기존의 날짜 타입인 Date의 문제점을 제대로 고친 타입이라 Java8일 경우 무조건 써야한다고 생각하면 됨 Date와 Calendar 클래스의 문제점 불변(변경이 불가능한) 객체가 아님 멀티스레드 환경에서 언제든 문제가 발생할 수 있음 Calendar는 월(Month) 값 설계가 잘못되었음 10월을 나타내는 Calendar.OCTOBER의 숫자 값은 '9' 당연히 10이라 생각했던 개발자들에게는 큰혼란이 있었음 기존엔 JodaTime이라는 오픈소스를 사용해서 문제점들을 피했고, Java8에선 LocalDate를 통해 해결함 LocalDate와 LocalDateTime이 데이터베이스에 제대로 매핑되지 않는 이슈가 Hibernate 5.2... 2021. 8. 20. 등록/수정/조회 API API를 만들기 위해 필요한 클래스 Request 데이터를 받을 Dto(Data Transfer Object) API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service Service에서 비지니스 로직을 처리하는게 아닌 트랜잭션, 도메인 간 순서 보장의 역할만 함 Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 이외에도 필터(Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao(Data Access Object)의 중간 .. 2021. 8. 19. Spring Data JPA JPA는 인터페이스로서 자바 표준 명세서이다. 인터페이스인 JPA를 사용하기 위해서는 구현체가 필요한데 대표적으로는 Hibernate, EclipseLink 등 이 있습니다. 하지만 Spring에서 JPA를 사용할 때는 이 구현체들을 직접 다루진 않습니다.. 구현체들을 좀더 쉽게 사용하고자 추상화시킨 Spring Data JPA라는 모듈을 이용해 JPA 기술을 다룹니다. JPA 2021. 8. 18. Spring Boot Test(JUnit 5) @ExtendWith(SpringExtension.class) @WebMvcTest(controllers = HelloController.class) public class HelloControllerTest { @Autowired private MockMvc mvc; @Test public void returnHello() throws Exception { String hello = "hello"; mvc.perform(get("/hello")) .andExpect(status().isOk()) .andExpect(content().string(hello)); } } @ExtendWith(SpringExtension.class) 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행 S.. 2021. 8. 18. Spring Boot Annotations @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "hello"; } @GetMapping("/hello/dto") public HelloResponseDto helloDto( @RequestParam("name") String name, @RequestParam("amount") int amount) { return new HelloResponseDto(name, amount); } } @RestController 컨트롤러를 JSON을 반환하는 컨트롤러로 변환 예전에는 각 메소드마다 @ResponseBody을 선언 했던 것을 한번에 사용할 수 있게 해줌 @GetMapping .. 2021. 8. 18. 이전 1 ··· 3 4 5 6 다음