본문 바로가기

Spring/Spring JPA6

Auditing을 이용한 엔티티 공통 속성 공통화 실제 서비스를 운영할 때는 보통 등로시간과 수정시간,등록자,수정자 를 테이블에 넣어 놓고 활용을 합니다. 그리고 데이터가 생성되거나 수정될 때 시간을 기록해주고, 어떤 사용자가 등록을 했는지 아이디를 남깁니다. 이 컬럼들은 버그가 있거나 문의가 들어왔을 때 활용이 가능합니다. 데이터를 대용량으로 데이터를 업데이트했는데, 다시 업데이트를 해야 할 경우 변경딘 대상을 찾을 때 활용할 수도 있습니다. Spring Data Jpa에서는 Auditing 기능을 제공하여 엔티티가 저장 또는 수정될 때 자동으로 등록일,수정일,등록자,수정자를 입력해줍니다. Audit의 사전적 정의는 '감사하다' 입니다. 즉 , 엔티티의 생명성과 수정을 감시하고 있는 것입니다. 이런 공통 맴버 변수들을 추상클래스로 마들고, 해당 추상 .. 2023. 3. 6.
영속성 전이 영속성 전이 즉, 'cascade'의 사전적 정의는 '작은 폭포', '폭포처럼 흐르다'라는 뜻이 있습니다. 영속성 전이랑 엔티티의 상태를 변경할 때 헤당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션입니다. 이때 부모는 One에 해당하고 자식은 Many에 해당합니다 예를 들어 Order 엔티티가 삭제되었을 때 해당 엔티티와 여관 되어 있는 OrderItem 엔티티가 함께 삭제되거나, Order 엔티티를 저장할 때 Order 엔티티에 담겨있던 OrderItem 엔티티를 한꺼번에 저장할 수 있습니다. 상태가 전파되는 모습을 폭포가 흐르는 모습으로 상상하면 떠올리기가 쉽습니다. CASCADE종류 설명 PERSIST 부모 엔티티가 영속화될 때 자식 엔티티도 영속화 MERGE 부모 엔티티가 병합될 때 자식.. 2023. 3. 6.
연관 관계 매핑 종류 엔티티 들은 대부분 다른 엔티티와 연관 관계를 맺고 잇습니다. JPA에서는 엔티티에 연관관계를 매핑해두고 필요할 때 해당 엔티티와 연관된 엔티티를 사요아여 좀 더 객체지향적으로 프로그래밍할 수 있도록 도와줍니다. 연관 관계 매핑의 기초를 알아보겠습니다. 예제 코드들은 쇼핑물 프로젝트 코드 입니다. http://www.yes24.com/Product/Goods/103453774 첫 번째로 기억해야 할 것은 연관 관계 매핑의 종류 입니다. 4가지의 매핑 관계가 있습니다. 일대일(1:1):@OneToOne 일대다(1:N) @OnetoMany 다대일(N:1)@ManyToOne 다대다(N:N)@ManyToMany 두번째로 중요한 것은 엔티티를 맵핑할 때는 방향성을 고려해야 합니다. 테이블에서 관계는 항상 양방향이.. 2023. 3. 5.
@Query Spring Data JPA 에서 제공하는 @Query 어노테이션을 이용하면 SQL과 유사한 JPQL(JAVA)이라는 객체지향 쿼리 언어를 통해 복잡한 쿼리도 처리가 가능합니다. SQL과 문법 자체가 유사하기 때문에 기존에 SQL을 사용하셨던 분들은 쉽게 배울 수 있습니다. SQL의 경우 데이터베이싀 테이블을 대상으로 쿼리를 수행하고 JPQL은 엔티티 객체를 대상으로 쿼리를 수행합니다. 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리입니다. JPQL은 SQL을 추상화 해서 사용하기 때문에 특정 데이터베이스 SQL에 의존하지 않습니다. 즉 JPQL로 작성을 했다면 데이터베이스가 변경되어도 에플리케이션이 영향을 받지 않습니다. @Query 는 Entity의 JpaRepository를 상속받는 인터페이스.. 2023. 3. 2.