목록Spring-boot (6)
notepad by Oxix

JPA Auditing으로 생성시간 / 수정시간 자동화하기 보통 엔티티에는 해당 데이터의 생성시간과 수정시간을 포함한다. 언제 만들어졌는지, 언제 수정되었는지 등은 차후 유지보수에 있어 굉장한 정보이기 때문이다. 삽입, 갱신 전에 날짜 데이터를 등록/수정 하는 코드가 여기저기 들어가게 된다. 귀찮고 코드가 지저분한 일이 발생하는데 이를 해결하려고 JPA Auditing이 있다. LocalDate LocalDate, LocalDateTime 은 기본 날짜 타입인 Date의 문제점을 고친 타입이라고 할 수 있다. @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity ..

이전까지는 랜덤 포트 실행 및 insert 쿼리 실행을 해보았다. 등록 기능을 완성 했으니 수정/ 조회 기능을 해볼 차례이다. PostsApiController @RequiredArgsConstructor @RestController public class PostsApiController { private final PostsService service; @PostMapping("/api/v1/posts") public Long save(@RequestBody PostsSaveRequestDto requestDto) { return service.save(requestDto); } @PutMapping("/api/v1/posts/{id}") public Long update(@PathVariable L..
이전에 클래스 생성이 완료되었으면 Database를 접근하기 위한 JpaRepository를 생성한다. Dao라고 불리는 DBLayer 접근자를 JPA에서는 Repository라고 부르며 인터페이스로 생성한다. JpaRepository을 상속하면 기본적인 CRUD 메서드가 자동으로 생성된다. @Repository를 추가할 필요도 없다. 다만 Entity 클래스와 기본 Entity Repository는 함께 위치 해야하는 점이며 기본 Repository 없이는 제대로 역할을 할 수가 없다. 나중에 프로젝트 규모가 커지면 Repository와 Entity클래스는 domain 패키지에서 함께 관리한다. Spring Data JPA 테스트 코드 작성하기 save, findAll 기능을 테스트 하려고 한다. im..
JPA? 현대의 웹 애플리케이션에서 관계형 데이터베이스는 빠질 수 없는 요소기 때문에 객체를 관계형 데이터베이스에서 관리하는 것이 중요하다. 개발자가 아무리 자바 클래스를 잘 설계해도 SQL을 통해야만 데이터베이스에 저장하고 조회할 수 있다. 수십 수백 개의 테이블을 만들고 유지보수해야 하며 객체지향은 기능과 속성을 한 곳에서 관리하는 기술이기 때문에 패러다임 불일치 문제가 생긴다. JPA는 이러한 문제를 해결하기 위해 서로 지향하는 바가 다른 2개의 영역을 중간에서 패러다임 일치를 시켜주기 위한 기술이다. 개발자는 객체지향적으로 프로그래밍을 하고 JPA가 SQL를 알맞게 대신 생성해서 실행 한다. 즉, SQL에 종속적인 개발을 하지 않아도 된다는 것이다. SpringData JPA JPA는 인터페이스로..
롬복 사용해 보기 롬복 ? 롬복은 자바 개발할 때 자주 사용하는 Getter, Setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해준다. import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor public class HelloResponseDto { private final String name; private final int amount; } @Getter : 선언된 모든 필드의 get 메서드를 생성해 준다. @RequireArgsConstructor : 선언된 모든 final 필드가 포함된 생성자를 생성해 준다 , final이 없는 필드는 생성자에 포함되지 않는다...

먼저 알아야할 것은 TDD와 단위 테스트는 다른 것이다. TDD는 테스트가 주도하는 개발을 의미하며 테스트 코드를 먼저 작성하는 것 부터 시작한다. -> 작성 종료 조건을 먼저 정해놓고 코딩을 시작한다고 생각하면 된다. RED : 항상 실패하는 테스트 작성 GRREN : 테스트에 통과하는 프로덕션 코드 작성 REFACTOR : 테스트가 통과하면 프로덕션 코드를 리팩터링 -> 보다 더 효율적인 방법으로 개선 위의 과정을 반복하며 제대로 동작하는지 확인한다. 반면 단위 테스트는 TDD의 첫 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다. 순수하게 테스트 코드만 작성하는 것을 뜻한다. 사용이유 개발 단계 초기에 문제를 발견하게 해준다. 기능에 대한 불확실성을 감소시켜준다. 추후에 코드를 리팩터링하거..