전체 글
어플리케이션의 비즈니스 로직이 올바르게 동작하려면 데이터를 사전 검증해야한다. 이를 유효성 검사(validate) 혹은 데이터 검증이라 부른다. 예를 들어 어플리케이션의 여러 계층에서 들어오는 데이터를 검사하여 의도한 형식대로 값이 들어오는지 확인하는 과정이 있다. 이는 매우 중요한 부분이다. 일반적인 어플 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직은 계층별로 진행된다. 이러한 유효성 검사는 클래스 별로 분산되어 관리하기 어렵고, 의외로 검증 로직에 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다. 또 검증해야 할 값이 많다면 검증하는 코드가 길어진다. 이러한 문제들은 코드를 복잡하게 하고 가독성을 떨어뜨린다. 이런 문제들을 해결하기 위해 자바 진영에서는 2009년부터 Bea..
[4장]에서는 스트림에 대해 알아보았다. 복습해보자면 스트림은 아래와 같은 특징을 보인다. 스트림은 컬렉션 데이터를 선언형으로 처리할 수 있다. (데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있다.) 더 간결하고 가독성이 좋아진다. (선언형) 스트림은 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. (파이프라이닝과 내부반복을 지원한다.) 성능이 좋아진다. (병렬화) 스트림은 대부분의 스트림 연산시 스트림 연산끼리 연결할 수 있다. 유연성이 좋아진다. (조립성, 책에서는 '조립할 수 있음'이라 표현되어있다.) 스트림의 연산은 최종 연산으로 중간 연산이 한 번에 처리된다. (스트림은 LAZY한 특성을 가지며, 이는 최적화와 관련이 있다.) 참고로 예제코드는 OpenJ..
JPA를 사용하는 어플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있다. 다만, 객체와 테이블의 성질이 달라 정확한 연관관계를 표현할 수는 없다. 본 책의 9장, 연관관계 매핑 챕터에서는 JPA에서 이러한 제약을 보완하면서 연관관계를 매핑하고 사용하는 방법을 알려준다. 연관관계 매핑 종류와 방향 [6장]에서 엔티티 설계를 알아보았다. [9장]에서 알아볼 것은 테이블 간 연관관계의 종류와 방향이다. 연관관계 종류는 크게 4가지가 있다. One To One (1:1) One To Many (1:N) Many To One (N:1) Many To Many (N:N) DB에서 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 Join 해서 참조하는 구조로 생성된다. 하지만 JPA를 사용..
이전에 알아봤던 것처럼 Spring Data에는 JPA를 지원해준다. 우선 JPA를 활용하기 전에 JPQL에 대해 알아보자. JPQL JPQL은 JPA Query Language의 줄임말로 JPA에서 사용가능한 쿼리를 의미한다. 그런데 JPQL을 왜 알아야할까? JPA는 정말 강력한 기능을 제공해 주지만 JPA의 Query Method 로만 개발하는 것에는 한계가 존재한다. 따라서 JPA를 사용하기 위해서는 JPQL도 알아야 한다. JPQL의 문법은 SQL과 매우 비슷하기 때문에 DB Query에 익숙하다면 어렵지 않게 사용가능하다. JPQL은 SQL과 차이가 존재한다. SQL에서는 테이블이나 칼럼의 이름을 사용한다. 반면에 JPQL은 엔티티 객체를 대상으로 수행하는 쿼리를 날리기 때문에 매핑된 엔티티의..
1. Put과 Patch 메서드 차이 2. 링크 클릭시 PATCH? GET? verifyEmail 로직 자체가 verify 컬럼을 수정해주기 때문에 별도의 body 내용이 필요 없다. 또한 메일로 링크를 보내기 때문에 별도의 http 메서드 처리가 필요 없을듯 하다. 3. @Treansaction을 붙이는 이유 - [ #3 ] PR 리뷰 4. "A problem occurred evaluating root project..." 에러 해결 - 모듈 생성시 그냥 New Module로 생성. gradle 확인시 cms 하위에 들어가 있어야한다. (하위, Flat 둘 다 있으면 Flat한거 삭제해야 한다.)
어플리케이션은 데이터(리소스)를 주고받는 것이 주 목적입니다. 엔터프라이즈급 어플리케이션에서 정상적으로 로직이 동작하기 위해서는 데이터베이스가 꼭 필요합니다. - 91 p. 어떻게 연동할까? 우선 스프링이 추구하는 Data 사용법에 대해 알아야 한다. 스프링은 Spring Data라는 스프링 하위의 프로젝트에서 제공하는 프로그래밍 모델을 통해서 스프링이 추구하는 데이터 접근 방식을 제공하고 있다. Spring Data가 추구하는 방향은 사용하는 DB의 특수성을 그대로 유지하며, 이것저것 할 것 없이 사용자가 스프링의 편안함을 느끼게 하는 것이라 한다. 따라서 스프링을 이용하는 난 ORM(객체 관계 맵핑)과 JPA를 알고 있어야 한다. ORM ORM은 객체관계 맵핑의 줄임말이다. ORM은 객체지향 언어에서..
1. jsoup.org/apidoc 에서 확인 후 가져오기 2. www.w3.org/Protocols/rfc2616/rfc2616-sec5.html 에서 HTTP 메서드 약속들을 찾아볼 수 있다. 여기서 메서드 설명을 읽어봐야 한다. 변경( https://www.rfc-editor.org/rfc/rfc9110.html#name-method-definitions ) 3. api 설계 과정 자체가 중요하다. 왜 이렇게 설계했고 왜 이런 라이브러리를 갖고 왔는지? 등 대답할 수 있어야함. 4. Controller → persist 패키지 생성 → persist 아래에 Entity 생성 5. Company Entity를 사용하지 않고 모델 클래스를 따로 정의해준 이유? 6. @Data, @Builder 7. J..