SpringBoot
@GeneratedValue : Sequence로 사용하기 위한 컬럼테이블 명은 관례상 소문자 + 언더스코어 또는 대문자 + 언더스코어 로 결정한다.OneToMany 또는 ManyToOne 중 Many쪽이 연관관계의 주인이 된다.FK가 가까운 쪽의 테이블이 연관관계의
Setter가 모두 열려있으면 변경 포인트가 너무 많아서 유지보수가 어렵다.EAGER(즉시로딩)은 예측이 어렵고 어떤 SQL이 실행될지 추적하기 어렵다.특히 JPQL을 실행할 때 N + 1문제가 자주 발생한다. \- EAGER의 경우 Join이 걸려있는 table의
Controller > Service > Repository > DBController, Service, Repository > Domaincontroller, web : 웹 계층service : 비즈니스 로직, 트랜잭션 처리repository : JPA를 직접 사용하
@Repository : component scan을 통해 자동으로 spring bean으로 관리@PersistenceContext : EntityManager를 만들어서 Injection함JPQL은 SQL과 약간 다름SQL은 테이블을 대상으로 쿼리 작성JPQL은 En
회원가입에 성공해야 함회원가입 시 같은 이름이 있으면 예외 발생@TransactionalTest 케이스에서 Transactional 어노테이션을 사용하면 테스트 종료 후 기본적으로 무조건 Rollback한다.하지만 이렇게 되면 Insert Update Delete문을
상품 등록상품 목록 조회상품 수정상품 엔티티 개발(비즈니스 로직 추가)상품 리포지토리 개발상품 서비스 개발, 상품 기능 테스트데이터를 가지고있는 쪽에(Entity)에 비즈니스 로직을 가지고있는 것이응집력이 좋을 때가 있음
상품 주문주문 내역 조회주문 취소주문 엔티티, 주문상품 엔티티 개발주문 리포지토리 개발주문 서비스 개발주문 검색 기능 개발주문 기능 테스트취소 시 재고 삭제주문 Entity는 생성될 때 주문이 들어온 것이기 때문에 주문 수량만큼 재고를 줄여줘야 함Entity 관계 설정
동적 쿼리(다이나믹 쿼리) -> JPA에서 동적쿼리 처리방법 : 쿼리를 문자열 변수에 담고, 각 조건을 if문으로 제어한다.단점 : 에러 발생 확률이 너무 높고 소스가 너무 길어짐JPA에서 표준으로 제공하는 Criretia로 만든다.스펙이 존재하긴 하나 너무 복잡하고
Form Class 또는 DTO의 필드에 @NotEmpty(message = "xxx은/는 필수 입니다.") 로 필수입력 값 validation 체크를 할 수 있다.Form Class 또는 DTO로 Parameter를 받을 때 @Valid 하나로 유효성검사를 편리하게
ID 값이 수정되어서 넘어올 수 있음(보안 취약점)유저가 해당 아이템에 대한 권한이 있는지 없는지 체크하는 로직이 서버에 있어야 한다.반드시 완벽하게 이해해야하는 과제변경감지(= dirty checking)JPA에서 Transaction 안의 영속성 Entity의 데이
React.js, Vue,js 등의 Single page application이 많음MSA가 등장하면서 시스템단위로 개발되는 경우가 많음대부분 API로 통신해야하는 경우가 많아짐복잡한 API는 어떻게 만들 것인가?이에 따른 성능 최적화는 어떻게 할 수 있을까?