본문 바로가기

JAVA/Spring

2022.12.08 JPA 2

JPA샘플

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
@Entity // DB 테이블 역할을 합니다.
public class User {
        // ID가 자동으로 생성 및 증가합니다.
      @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    // nullable: null 허용 여부
    // unique: 중복 허용 여부 (false 일때 중복 허용)
    @Column(nullable = false, unique = true)
    private String username;
 
    @Column(nullable = false)
    private String password;
 
    @Column(nullable = false, unique = true)
    private String email;
 
    @Column(nullable = false)
    @Enumerated(value = EnumType.STRING)
    private UserRoleEnum role;
 
    @Column(unique = true)
    private Long kakaoId;
}
cs

 

 

DB의 연관관계 이해

자바는 객체와 레퍼런스로, 데이터베이스는 테이블사이의 관계(FK)로 정보 사이의 연관관계를 표현하고 처리한다는 내용 기억나시죠? 이 두 방식의 차이를 해결해주기 위해서 JPA에는 “Java 어플리케이션 상에서”, “데이터베이스의 연관관계”를 표현해주기 위한 장치들을 가지고 있습니다.

 

    1. DB 의 연관관계 체크사항
    •  JPA 가 제공하는 연관관계는 결국 DB 의 연관관계를 표현하기 위함 입니다.
    •  따라서 먼저 DB 의 연관관계를 이해해야 합니다.
    •  DB 의 연관관계는 비즈니스 요구사항에 맞춰 이루어집니다.
    1. 음식 주문앱 DB 설계 예제
    예를 들어, 우리가 음식 주문앱 DB를 설계한다고 가정해 보겠습니다. 일단 "고객이 1개의 음식을 주문할 수 있다"라는 요구사항을 받았다고 해봅시다. 이 부분은 말 그대로, Java, JPA가 아닌 데이터 베이스 설계 관련한 내용입니다. 아래의 자료들은 말 그대로 오직 “데이터 베이스 테이블” 설계만 생각한 내용이에요

1. 각 주체의 테이블 설계

2. 연관 관계 고민

  • 고객이 음식 주문 시, 주문 정보는 어느 테이블에 들어가야 할까요?
  • 고객 테이블? 음식 테이블??
  • Tip) 테이블 설계 시 실제 값을 넣어보면 짐작하기 조금 더 쉽습니다.
  • 시도1) "고객 테이블" 에 주문 정보를 넣어 볼까요?

  • 시도2) "음식 테이블" 에 주문 정보를 넣어볼까요?

  • '주문'을 위한 테이블이 필요 → Order 테이블 추가

 

'JAVA > Spring' 카테고리의 다른 글

2023.01.02 Spring Security...ing  (0) 2023.01.02
2022.12.21 Lombok  (0) 2022.12.22
2022.12.07 JPA 기초 ...ing  (0) 2022.12.07
2022.12.06 Database와 SQL  (0) 2022.12.06
2022.12.05 웹 동작방식의 이해  (0) 2022.12.05