개발 공부는 어려워
article thumbnail
Published 2023. 11. 21. 16:20
JPA 설정 study/spring
반응형

1. 의존성 추가

<java />
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j'

 

2. 설정

<java />
jpa: hibernate: ddl-auto: update properties: hibernate: format_sql: true show_sql: ture defer-datasource-initialization: true
  • ddl-auto  (테이블 생성 규칙)
    • none (데이터 베이스를 변경하지 않음)
    • update  (엔티티 변경 내용만 적용)
    • create  (서버 실행시 모두 삭제하고 다시 생성)
    • vreate-drop  (create와 같지만 서버가 종료될때 모두 삭제)
    • validate  (변경 검사만 진행)
  • format_sql (콘솔에 쿼리문 출력설정 true -> 출력한다.)
  • show_sql (콘솔에 쿼리 출력 format_sql true일때만 실행된다.)

 

3. Entity 생성

생성할 테이블과 동일하게 만들어준다.

<java />
/* * 게시판 Table */ @Entity @Table(name = "BOARD_STUDY") public class BoardEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column private Long boardId; @Column private String title; @Column private String cont; }
<java />
/* * 댓글 Table */ @Entity @Table(name = "COMMENT_STUDY") public class CommentEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long commentId; @ManyToOne @JoinColumn(name = "board_id") private BoardEntity board; @Column private String nickname; @Column private String comment; }

 

  • @Entity (해당 class 파일을 Jpa가 인식해 테이블과 Mapping이 된다.)
  • @Table (만들어질 테이블의 이름이 된다.)
  • @Id (해당 어노테이션을 사용하면 Primary Key가 된다.)
  • @ManyToOne (n : 1 의 내용을 가진다.)
  • @JoinOlumn (name값에 외래키의 이름을 지정한다.)
  • @Column (테이블의 컬럼을 나타낸다.)

 

4. Repository 생성

<java />
@Repository public interface BoardRepository extends JpaRepository<BoardEntity, Long> { }
<java />
@Repository public interface CommentRepository extends JpaRepository<CommentEntity,Long> { }

 

JpaRepository Interface를 상속받아서 Jpa를 사용한다.

 

5. 테이블 생성

테이블 생성은 아까 application.yml 설정에서 ddl-auto부분을 update를 해주었기 때문에 

현재 데이터베이스에 테이블이 존재하면 아무런 반응이 나오지 않을것이고, 

테이블이 없다면 생성될 것이다.

 

 

서버를 실행전에는 아까 @Table 어노테이션으로 설정한 테이블이 존재하지 않는다.

 

하지만 위에 서버를 실행시키면

 

@Table 어노테이션으로 만들었던 테이블이 생성된다.

 

반응형

'study > spring' 카테고리의 다른 글

Spring Boot 어노테이션 만들기(Custom Annotation)  (0) 2024.05.27
Jpa @CreateData어노테이션  (0) 2023.12.11
Thymeleaf 설정  (0) 2023.11.21
@ModelAttribute 어노테이션  (0) 2023.08.02
@SpringBootTest 어노테이션 사용 이유  (0) 2023.08.01
profile

개발 공부는 어려워

@신입개발자하랑이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!