반응형
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 |