728x90
<목차>
1.스프링부트 의존성 설정
2. application.yml을 이용한 데이터베이스 연결(mysql)
3. 엔티티 매핑
4. 실행결과
1.스프링부트 의존성 설정
2. application.yml을 이용한 데이터베이스 연결(mysql)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/lms_jpa?serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
org.hibernate.type: trace
|
cs |
*서버 포트를 8081로 수정한 이유는 이미 8080을 사용하고 있어서 부득이하게 바꾼 것입니다.
**데이터베이스는 mysql을 사용했습니다. url과 name password driver class를 지정해줍니다.
*** jpa: hibernate: ddl-auto: create 를 사용하여 새로 시작할 때마다 데이터베이스를 초기화하고 새롭게 만들어줍니다.
3. 엔티티 매핑
1) 엔티티 다이어그램
member 안의 회원들의 출석을 체크하기 위해 attend 테이블이 필요합니다.
그렇기때문에 attend 테이블이 member테이블과 member_id를 외래키로 하는 1대 다 관계의 테이블을 만들어줍니다.
학생용 숙제 테이블인 homeworkstudent는 memberId와 출제된 숙제인 homeworkteacher의 homework_teacher_id를 외래키로 하는 1대 다 관계를 맺게 합니다.
2) 클래스 매핑
Member
1
2
3
4
5
6
7
8
9
|
@Entity
@Getter
public class Member {
@Id
@Column(name = "member_id")
private String id;
@Column(name = "member_name")
private String name;
}
|
cs |
단방향 매핑이므로 따로 member에 관계를 설정해주지 않습니다.
Attend
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package com.example.lms_jpa.domain;
import lombok.Getter;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Attend {
@Id
@GeneratedValue
@Column(name = "attend_id")
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
private Date enter_datetime;
private Date left_dateTime;
@Enumerated(EnumType.STRING)
private AttendStatus attendStatus;
}
|
cs |
@ManyToOne으로 1대 다의 관계를 알려주고, JoinColumn을 사용하여 member_id를 외래키라고 알려줍니다.
HomeworkStudent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.example.lms_jpa.domain;
import javax.persistence.*;
import java.util.Date;
@Entity
public class HomeworkStudent {
@Id
@GeneratedValue
@Column(name = "homework_student_id")
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
@ManyToOne
@JoinColumn(name = "homework_teacher_id")
private HomeworkTeacher homeworkTeacher;
//private homeworkfile
private Date registDatatime;
}
|
cs |
HomeworkTeacher
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.example.lms_jpa.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
@Entity
public class HomeworkTeacher {
@Id
@GeneratedValue
@Column(name = "homework_teacher_id")
private Long id;
private String subject;
private Date startDate;
private Date dueDate;
}
|
cs |
4.실행결과
LmsLpaApplication을 실행해줍니다.
그리고 mysql에 들어가 테이블들을 확인해줍니다.
테이블 전체
member
attend
homework_student
homework_teacher
728x90
'프로그래밍 언어 > Spring' 카테고리의 다른 글
<SpringBoot> LMS 프로젝트 9. Repository, service 계층 구현 및 테스트 (0) | 2021.12.13 |
---|---|
<JPA> JPA 2. 엔티티 매핑 (0) | 2021.11.18 |
<JPA> JPA 1. 내부 동작 방식 영속성 (0) | 2021.11.18 |
<Spring> 스프링 핵심원리 - 기본편 후기 (0) | 2021.11.17 |
<Spring>LMS프로젝트7. 학생 출결 로직 작성(5) 컴포넌트스캔과 자동 의존관계 주입 (0) | 2021.11.08 |