본문 바로가기

728x90
반응형
SMALL

JPA

[JPA] 연관관계(2) [JPA] 연관관계 (1) [JPA] 연관관계 (1) 엔티티들은 대부분 다른 엔티티와 연관관계가 있다 예를 들어 위와 같은 ERD가 있다고 가정하고 영화 엔티티에는 감독이 누구인지 알기 위해 감독 엔티티와 연관관계가 있고 영화 엔티티는 리뷰 ldevlog.tistory.com 이전 글을 안 보고 왔다면 위에 이전 글을 보고 오는 것이 좋다 다대일(N:1) 단방향 import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; import java.time.LocalDateTime; @Entity @NoArgsConstructor @Data public class Review { @Id @GeneratedValue(strate.. 더보기
[JPA] 연관관계 (1) 엔티티들은 대부분 다른 엔티티와 연관관계가 있다 예를 들어 위와 같은 ERD가 있다고 가정하고 영화 엔티티에는 감독이 누구인지 알기 위해 감독 엔티티와 연관관계가 있고 영화 엔티티는 리뷰, 리뷰 정보 등의 또 다른 엔티티와 관계가 있다 그런데 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다 객체 매칭 관계에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다 그래서 우리는 연관관계를 정의할 때 생각해야 할 것은 크게 3가지가 있다 방향(Direction) : 단방향, 양방향 이 있다 데이터베이스 테이블은 외래 키 하나로 양쪽 테이블 조인이 가능하기 때문에 단방향이니 양방향이니 나눌 필요가 없다 하지만 객체는 참조용 필드가 있는 객체만 다른 객.. 더보기
[JPA] EntityListeners 활용 EntityListener 란 Entity가 삽입, 삭제, 수정, 조회 등의 작업을 할 때 전, 후에 어떠한 작업을 하기 위해 이벤트 처리를 위한 어노테이션이다 EntityListener의 종류 @PrePersist : Persist(Insert) 메서드가 호출되기 전에 실행되는 메서드 @PreUpdate : Merge(Update) 메서드가 호출되기 전에 실행되는 메서드 @PreRemove : Remove(Delete) 메서드가 호출 되기 전에 실행되는 메서드 @PostPersist : Persist(Insert) 메서드가 호출된 후에 실행되는 메서드 @PostUpdate : Merge(Update) 메서드가 호출 된 후에 실행되는 메서드 @PostRemove : Remove(Delete) 메서드가 호.. 더보기
[JPA] QueryMethod 활용 JpaRepository 에서 기본적으로 제공해주는 메소드 이외에 우리가 직접 만들어서 사용 할 수 있는 QueryMethod의 종류와 방법을 알아 보려 한다 기본적인 테이블 생성과정은 생략 하며 repository 에서의 정의와 실제 어떻게 동작하는지 쿼리를 확인해 보기 위해 Test를 진행해 볼 것이다 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#appendix.query.method.subject Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) int.. 더보기
[Spring-Boot] JPA를 활용하여 간단한 CRUD 게시판 만들기(3) 이번부터는 본격적으로 JPA를 활용하여 데이터 조작을 해볼 것이다 우선 위와 같이 패키지와 클래스들을 만들어 놓은 다음 하나하나씩 작성해 나갈 것이다 그리고 build.gradle 에 spring-boot-devtools를 추가시켜 줬다 developmentOnly 'org.springframework.boot:spring-boot-devtools' https://velog.io/@bread_dd/Spring-Boot-Devtools Spring Boot Devtools 알아보기 Spring Devtools에 대해 알아보았습니다. velog.io IntelliJ는 Devtools를 따로 설정해줘야 하는데 위에 블로그에 설명이 잘 되어 있다 eclipse는 따로 설정을 안 해줘도 아마 동작을 하는 걸로 알.. 더보기
[Spring-Boot] JPA를 활용하여 간단한 CRUD 게시판 만들기(2) 저번 포스팅에서 화면 뼈대를 만들어 놨기 때문에 이번 포스팅에서는 DB 연결을 위한 설정을 진행할 것이다 resources 밑에 application.properties 또는 application.yml 파일에 설정을 하는데 두 파일 모두 동일하기 때문에 편한 걸로 사용하면 되겠다 spring: h2: console: enabled: true thymeleaf: cache: false 설정 파일에 위와 같이 설정을 하는데 우선 밑에 thymeleaf에 cache를 false로 준 이유는 우리가 html 파일을 수정했을 때 서버를 재시작하지 않고 바로 반영이 되게 하기 위해서 이다 h2설정에 enabled를 true 준뒤에 서버를 실행해 보면 아래와 같은 로그를 확인해 볼 수 있다 우리의 서버에 /h2-c.. 더보기
[Spring-Boot] JPA를 활용하여 간단한 CRUD 게시판 만들기(1) 시작하기 전에 간단하게 JPA를 알아보자면 Java Persistence API의 약자로 자바 진영의 ORM 기술 표준이다. 여기서 ORM 도 간단하게 알고 넘어가자면 Object Relational Mapping의 약자로 객체-관계 매핑 이란 뜻이다. 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하는데 여기서 객체 모델과 관계형 모델 간에 불일치가 존재하는데 이 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결하는 것이 ORM이다. 즉 개발자가 따로 SQL문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 되는 것이다. 그럼 이제 프로젝트를 생성하고 build.gradle 에 dependencies를 아래와 같이 추가해 준다. dep.. 더보기

728x90
반응형
LIST