Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
27 | 28 | 29 | 30 | 31 |
Tags
- 독서
- HTML
- API
- 항해99
- TIL
- 스파르타코딩클럽
- 스프링시큐리티
- 엔터키 이벤트
- ServerSelectionTimeoutError
- JSESSIONID
- unmappable character for encoding MS949
- 자바스프링
- 에러해결법
- mysql
- org.h2.jdbc.JdbcSQLSyntaxErrorException
- java
- WIL
- MS949
- 인텔리제이
- 인프런
- java.sql.SQLException
- 김영한
- jwt
- Code
- PUT과 PATCH
- 자바
- 객체지향
- .decode('utf-8')
- 프로그래머스
- 알고리즘
Archives
- Today
- Total
고을마을 : 나의 코딩 이야기
항해99 7기 4주차 WIL[ORM, SQL, MVC] 본문
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 을 내려 주는 경우
- 정적 (static) 웹 페이지
- Controller
- Client 의 요청을 Model 로 받아 처리
- 예) 회원가입을 위한 개인 정보들 (id, password, name)
- Client 에게 View (정적 웹 페이지, HTML) 를 내려줌.
- Client 의 요청을 Model 로 받아 처리
- Controller
- 동적 (dynamic) 웹 페이지
- Controller
- Client 의 요청을 Model 로 받아 처리
- Template engine 에게 View, Model 전달
- View: 동적 HTML 파일
- Model: View 에 적용할 정보들
- Template engine
- View 에 Model 을 적용 → 동적 웹페이지 생성
- 예) 로그인 성공 시, "로그인된 사용자의 id" 를 페이지에 추가
- Template engine 종류: 타임리프 (Thymeleaf), Groovy, FreeMarker, Jade 등 (스프링에서 JSP 이용은 추천하지 않고 있음)
- View 에 Model 을 적용 → 동적 웹페이지 생성
- Client 에게 View (동적 웹 페이지, HTML) 를 내려줌
- Server 에서 HTML 을 내려 주는 경우
- Controller
- 정적 (static) 웹 페이지
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에 대해서 공부해봐야겠다.
'항해99 7기 > WIL(Weekly I Learned' 카테고리의 다른 글
항해99 7기 6주차 WIL[첫 협업] (0) | 2022.06.19 |
---|---|
항해99 7기 5주차 WIL[cors] (0) | 2022.06.13 |
항해99 7기 3주차 WIL[DI, IoC, Bean] (0) | 2022.05.29 |
항해99 7기 2주차 WIL[객체지향 프로그래밍, JVM] (0) | 2022.05.23 |
항해99 7기 1주차 WIL[JWT, API] (0) | 2022.05.15 |