반응형

Spring/JPA 16

태태개발일지 - JPA Auditing

JPA Auditing 계속 사용하다가 까먹어서 글로 정리하려고 한다.  우선 Auditing 기능을 사용하려면@EnableJpaAuditing@SpringBootApplicationpublic class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); }}을 명시해 주어야한다. 그리고 Entity 상단에는@Data@EntityListeners(AuditingEntityListener.class)@Table(name = "", catalog = "", schema = "")public class CtrlInfo { 이벤트 리스너를 통해서 Audi..

Spring/JPA 2024.10.22

태태개발일지(EVENT)

서비스 로직을 처리할 때 하나의 로직 이후에 연계되어서 일어나는 로직을 실행할 때, 하나의 도메인 서비스에 다른 도메인 서비스를 넣어서 강력한 결합을 사용하고 있었다. ex) @Service @Slf4j @RequiredArgsConstructor public class PostService { private final PostRepository repository; private final MessageRepository messageRepository; } 이런 것을 해결하기 위해서 중간에 event publisher를 둠으로써 결합의 강도를 줄일 수 있는 event를 알게되었다. @Entity @Table(name = "post") @AllArgsConstructor @NoArgsConstructo..

Spring/JPA 2023.12.04

태태개발일지(query method)

Query Optinal findByName(String name); -> Optinal값으로 return이 된다. findBy -> selete로 가장 많이 사용된다. getByEmail readByEmail queryByEmail searchByEmail streamByEmail 여러가지가 존재한다. countBy-> 숫자 새기 -첫번째 원소 가져오기 findFirst1By findTop1ByName -> 첫번째 원소를 가져온다 -And OR 연산자 사용 findByEmailAndName -> and연산자와 or연산자등 여러 연산자를 사용할 수 있다. -범위 사용 findByIdAfter(Long id); findByIdbefore(); -> 매개변수보다 크거나 작다 but ecual 포함 x Gre..

Spring/JPA 2023.08.21

태태개발일지(연관관계 JPA)

관계에는 1:1 , 1:N , N:N 관계가 있고, JPA에서는 이의 연관관계를 나타내는 방법이 있다. @OneToOne private Class class; --> 이렇게만 설정하면 서로에 서로에대한 FK가 생기고 , 그렇기때문에 mapped by option을 통해서 지정을 해줘야한다. mapped by: 다른 클래스의 변수명을 입력해주면된다. , 연관 키를 해당테이블에서는 가지지 않게되는 효과를 받을 수 있다. @OneToMany -> 1:N중에 1인 클래스에 선언 private List class = new ArrayList(); -> 초기화 시켜주는 습관 @JoinColum(name = " ") -> 어떤 colum과 join할지 지정하는 어너테이션 @OneToMany + @JoinColumn:..

Spring/JPA 2023.08.17

태태개발일지(JPA트러블 슈팅)

-N+1 문제란? 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. -그렇다면 Lazy를 사용하면 해결되는가? 결과는 아니다 EAGER 객체를 부르면 연관된 데이터를 그냥 다 불러온다. lazy -> get을 했을경우 가능하다. -> @Transtaion으로 되어있어 영속성이 가능할 때 까지 라는 특성을 가지지만 결국 lazy로 get을 통해 불러올경우 쿼리가 N만큼 늘어나 동일 하다는 것이다. Json으로 파싱할때 엔티티를 getter로 참조하게되는데 그때 lazy로 되어있다고해도 쿼리가 발생하기떄문에 @ToSTring.Exclude를 사용해줘야 재 역할을 ..

Spring/JPA 2023.08.16

태태개발일지(JPA)

JPA?(java persistance api) jap -hibernate -eclipse LInk Spring Data jpa? - hibernate를 조금 더 간편하게 사용하기 위해서 추상화를 한번더 한 것. Spring Flow aplication 과 RDB를 연결해주는 것을 ORM개념이라고 한다. Java에서는 ORM표준을 JPA라는 것을 interface로 정의하여 제공하고있는데 자주쓰는 hibernate를 한번더 추상화시킨것이 Spring data jpa이다. (가장중요한 ENTITY의 기본 속성) @Entity -> 해당 클래스가 데이터베이스의 기본이 되는 엔티티임을 선언. @Table -> class네임과 다르게 실제 데이터베이스 테이블 이름을 지정해준다. + ,indexes = {@Ind..

Spring/JPA 2023.08.10
반응형