데이터베이스 테이블의 기본 키(PK)와 객체의 필드를 매핑시켜주는 어노테이션입니다. 적용 가능 타입 자바 기본형 (int, long, ...) 자바 래퍼형 (Integer, Long, ...) String Date (java.util) Date (java.sq
생성자 주입(Constructor Injection)은 생성자를 통해 의존 관계를 주입하는 방법이다.생성자 주입은 생성자의 호출 시점에 1회 호출 되는 것이 보장된다. 그렇기 때문에 주입받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우에 강제하기 위해 사용
다음과 같은 엔티티가 있을때 Member와 Post는 1:N 관계 입니다.이때 Post 테이블에서 post.member_id 를 기준으로 일치하는 데이터들을 가져오는 메서드를 작성합니다.가능한 메서드는 두 종류가 있습니다.Member 라는 엔티티를 조건으로 검색하는 f
조회한 데이터를 return 한다고 해도 의도치 않게 데이터가 변경되는 일을 사전에 방지해줍니다.해당 옵션인 경우 CUD 작업이 동작하지 않고, 스냅샷 저장, 변경 감지(dirty check)의 작업을 수행하지 않아 성능이 향상됩니다. 여기서 dirty checking
게시판 작성을 하면서 컨트롤러 에서 브라우저로 부터 JSON을 받을 때 무심코 @ModelAttribute를 작성하였습니다. 하지만 정상적으로 JSON 데이터를 DTO로 받지 못하였고, 그 이유를 찾으니 DTO에 setter메소드를 작성하지 않았기 때문에 JSON을 받
필요로 하는 기능은 다음과 같았다.게시판 작성시 DTO로 넘어오는 null값인 조회 수, 추천 수, 댓글 수는 0으로 초기화 될 수 있도록 한다.그래서 자연스럽게 Entity에 조회 수, 추천 수, 댓글 수에 해당하는 컬럼 위에 @ColumnDefault("0")과 같
더티체킹(Dirty Checking)은 다음과 같이 정의할 수 있다.트랜잭션 안에서 Entity의 변경이 일어났을 때 변경한 내용을 자동으로 DB에 반영하는 것기본적으로 더티 체킹을 실행하면, SQL에서는 변경된 엔티티의 모든 내용을 update 쿼리로 만들어 전달하는
다른 자료들을 참고하다 보니 작성과 수정 부분에서 같은 메서드인 save()를 사용하는 분들이 많은 것을 발견하였습니다.그래서 save()의 쿼리를 살펴보니 공통적으로 사용하는 쿼리가 한개 있었는데 select 쿼리 였습니다. 그래서 자료를 찾다가 insert()와 u
직접 offset, limit 등 변수를 선언하여 JPARepository의 메서드인 findByPage, totalCount을 이용하여 페이징 코드를 작성하는 것으로, totalCount를 먼저 불러와서 그에 맞도록 동적 페이징 코드를 작성하는 것이다.마지막 페이지가
@Modifying을 말씀드리기 전에 먼저 @Modifying이 적용되는 @Query에 대해 알고 넘어갑시다.Spring Data JPA에서는 기본적으로 JpaRepository를 통해서 제공되는 findById와 같은 메서드도 있고, 메서드 네이밍만을 통해서 쿼리를
생성자주입의 단점은 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 lombok을 사용하여 간단한 방법으로 생성자 주입 방식의 코딩을 할 수 있다.@RequiredArgsConstructor : final이 붙거나 @NotNull 이 붙은 필드의 생성자를
개발을 하면서 브라우저로 부터 받는 데이터의 값이 늘어날 때 기존의 클래스와 로직을 건들지 않고 데이터를 받을 클래스를 별도로 추가한다면 그만큼 안전한 수정 및 기능확장이 없을 것 같아 관련 내용을 찾던 도중 불가능한 것을 알게되었습니다. Web Application의
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용하는 옵션예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장부모 저장할 때, em.persist(parent)연관된 컬렉션안의 자식 엔티티들 모두 다 함께 영속성 컨테스트에 저
JPA에서는 데이터를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 두 가지 방식이 있다. 이 두 가지 방식을 간단하게 설명하면 즉시 로딩은 데이터를 조회할 때 연관된 데이터까지 한 번에 불러오는 것이고, 지연 로딩은 필요한 시점에 연관된 데이터를 불러오는
양방향 관계에서 서로 @ToString을 정의해서 사용하다 보면 결국 무한으로 각각 객체의 toString을 호출하게 되면서 StackOverflowError가 발생하게 된다.즉, Lombok의 @ToString, @Data나 IDE가 제공하는 toString() 메서
# AWS 로드밸런서 HTTP → HTTPS 리다이렉트 보통 브라우저는 HTTPS로 접근되어 보안성을 높입니다. AWS에서는 해당 작업을 지원해주는 기능이 있습니다. 보통 로드밸런서에서 해당 기능을 지원해주고 있습니다. 그래서 로드밸런서를 이용하여 HTTP -> HT
AWS를 이용하는 학생의 입장에서는 프리티어 한도에 대해 민감할 수 밖에 없습니다.AWS에서 제공하는 서비스에 대해 매번 한도를 찾는것이 번거로운 작업인데 한 곳에 AWS 서비스에 대한 개념과 한도를 정리해놓은 글이 있어 링크를 공유합니다.AWS 서비스 설명 및 프리티