고을마을 : 나의 코딩 이야기

항해99 7기 4주차 WIL[ORM, SQL, MVC] 본문

항해99 7기/WIL(Weekly I Learned

항해99 7기 4주차 WIL[ORM, SQL, MVC]

고을마을 2022. 6. 5. 22:40

2022년 6월 5일 

항해99에 참여한지 4주 차이다.

 

이번주 중요했던 부분을 다시한번 살펴보고 그 내용을 적어보고자 한다.

 


ORM이란? 

 

ORM: Object-Relational Mapping

           Object: "객체"지향 언어 (자바, 파이썬)

           Relational: "관계형" 데이터베이스 (H2, MySQL)

 

 

 

웹서버와 DB를 연결시켜주는 것.

 

그렇다면...

 

JPA: Java Persistence API 자바 ORM 기술에 대한 표준 명세

 

@Setter
@Getter             // get 함수를 일괄적으로 만들어줍니다.
@NoArgsConstructor  // 기본 생성자를 만들어줍니다.
@Entity             // DB 테이블 역할을 합니다.
public class Users {

    // ID가 자동으로 생성 및 증가합니다.
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    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)                       //EnumType을 스트링으로 변환해주겠다는 의미.
    private UserRoleEnum role;

    @Column(unique = true)
    private Long kakaoId;

 

JPA를 활용해서 만든 @Entity와 @column을 토대로 db가 만들어졌음을 알수있다.

 


MVC란?

MVC (Model - View - Controller) 디자인 패턴

 

  • Server 에서 HTML 을 내려 주는 경우
    1. 정적 (static) 웹 페이지
      • Controller
        1. Client 의 요청을 Model 로 받아 처리
          1. 예) 회원가입을 위한 개인 정보들 (id, password, name)
        2. Client 에게 View (정적 웹 페이지, HTML) 를 내려줌.
    2. 동적 (dynamic) 웹 페이지
      • Controller
        1. Client 의 요청을 Model 로 받아 처리
        2. Template engine 에게 View, Model 전달
          1. View: 동적 HTML 파일
          2. Model: View 에 적용할 정보들
        3. Template engine
          1. ViewModel 을 적용 → 동적 웹페이지 생성
            1. 예) 로그인 성공 시, "로그인된 사용자의 id" 를 페이지에 추가
            2. Template engine 종류: 타임리프 (Thymeleaf), Groovy, FreeMarker, Jade 등 (스프링에서 JSP 이용은 추천하지 않고 있음)
        4. Client 에게 View (동적 웹 페이지, HTML) 를 내려줌
        5. Server 에서 HTML 을 내려 주는 경우

 

 


SQL이란?

 

SQL은 RDBMS에 저장된 데이터와 통신하기 위해 필요한 프로그래밍 언어이다.  ‘에스큐엘’ 혹은 ‘시퀄’로 발음한다.

SQL에서 사용할 수 있는 데이터 타입의 종류는 많지만, 그 중에 자주 쓰일 법한 데이터 타입을 정리해봤다.

 

VARCHAR(size) 255자 255자의 문자를 저장한다. 문자열의 길이는 가변적이다.
INT(m) 표준 integer 값. -2147483648 ~ 2147483647. m은 정수의 크기가 아닌 자릿수 개수이다.
BIGINT(m) 큰 integer 값. -9223372036854775808 ~ 9223372036854775807 m은 정수의 크기가 아닌 자릿수 개수이다.
FLOAT(m,d) 단일 정밀 부동 소수점 숫자 m은 정수 자릿수, d는 소수점 아래 자릿수 개수이다.
DATE ‘1000-01-01’ ~ ‘9999-12-31’ ‘YYYY-MM-DD’로 표기된다.
TIME ‘-838:59:59’ ~ ‘838:59:59’ ‘HH:MM:SS’로 표기된다.

 

다만, 항해99에서는 jpa를 활용하기에 sql에 대해서 깊게 다루지는 않고있다.

sql에 대해서 찾아보다가 jpa로 구현하지 못하는 부분도 있을수 있고 이 경우 sql 쿼리를 활용해서 처리해야한다는 글을 읽게 됐다. 나중에는 sql에 대해서 공부해봐야겠다.