Gradle & Maven
spring boot는 layered architecture 방식. Layered Architecture ?각 layer들이 다른 Layer들과 통신하는 것. each layer communicates to other layers(in hierarchical ord
Spring Boot Project를 위해 따로 정해진 layout이나 code structure은 없지만, 모범 사례가 몇 개 있다.Project를 layer로 나누는 것.service layer, entity layer, repository layer, etc. P
AOP AOP가 필요한 상황 모든 Method의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core co
Builder Pattern 복잡한 단계의 인스턴스 생성을 builder pattern으로 구현. 복잡한 단계를 거쳐야 생성되는 객체의 구현을 sub class에 넘겨주는 패턴.
OneToOne: 두 테이블 중 아무곳이나 FK 둬도 됨. 많이 Access 하는 테이블에 생성하는 것 추천.@Enumerated(EnumType.STRING)ORDINAL, STRING 옵션. Default: ORDINAL-컬럼이 숫자로 들어감 1,2,3,4 -> 문
CQS(Command Query Separation) Command와 Query를 분리. 모든 method는 상태를 변경하는 command 또는 데이터를 반환하는 query 중 한가지 기능만 시실행해야함. Method는 값을 반환 할 때, referentially tr
controller : 일반 클래스 @Controller 붙임. 요청 url를 등록하고 url과 매핑되는 method 등록 @RequestMapping("url"): url 등록, 전송 방식 get,post 다됨. 요청 방식이 get인지, post인지에 따라 @Get
기본적으로 @springBootApplication이 포함된 package와 하위 package만 spring bean으로 등록. Spring은 spring container에 spring bean을 등록할때, 기본적으로 singleton으로 등록한다.(유일하게 하나
JPA가 동작하는 걸 TEST 하기 위해서.좋은 테스트라고 할 수는 없음.좋은 테스트 -> DB나 Dependencies 없이, 스프링도 엮지 않고 순수한 method로만 test하는게 좋음. unit test아래 테스트 같은 경우는 통합 테스트 할때.
어떤 조건 또는 상황에도 변경되지 않음.특정 조건들이나 상황에 따라 변경됨.ex) 검색 기능 \- parameter 값이 없으면 전체 데이터 검색, \- parameter 값이 있으면 그 값으로 데이터 검색. jpql을 문자열로 만든 후, string을 추가하는
Member entity를 안쓰고 memberForm을 만든 이유:가지고 있는 field가 서로 다름.validation을 entity에 추가하면 점점 entity class가 지저분해짐controller에서 화면으로 넘어오는 validattion과 실제 domain에
영속성 컨텍스트가 더는 관리하지 않는 entity.예를 들어, 아래 코드에서 itemService.saveItem(book)에서 수정을 시도하는 Book 객체. Book 객체는 이미 DB에 한번 저장되어서 식별자가 존재. DB에 한 번 다녀온 것 들. 이렇게 임의로 만
Template 엔진을 사용하는 controller랑 api 사용하는 controller랑 구조 분리.공통으로 예외 처리를 할 때, 패키지 단위의 구성으로 공통 처리를 많이 함 -> api랑 template이랑 공통 처리할 요소가 다름. template의 경우 예외 발
API 개발 고급 지연 로딩과 조회 성능 최적화 주문 조회 V1: Entity 노출 > Lazy를 이용한 지연 로딩
API 개발 고급 (컬렉션 조회 최적화) 컬렉션 조회 : 일대다 조회
Open Session In View: hibernateOpen EntityManager In View: JPAspring.jpa.open-in-view: true 기본값OSIV 전략: 최초 데이터베이스 커넥션 시작(트랜잭션 시작)부터 트랜잭션이 끝나도 영속성 컨텍스트
JpaRepository 인터페이스에서 기본적인 CRUD기능 제공findByName 특정 필드도 정해진 method이름으로 만들면 정확한 JPQL 쿼리를 실행select m from Member m where m.name = :name인터페이스만 만들면 구현체는 스프링