항해99/TIL

43일차-7/19 월 -항해99

고로케 2021. 7. 19.
반응형

하루 회고

  • 클론코딩을 하면서 많은 부분에서 내가 이유없이 쓰는 코드가 생각보다 많다는 걸 느꼈다. 이유를 찾아가면서 하는게 중요하단걸 알지만, 또 한편으로는 일단 협업이기 때문에 프론트에서 작동을 하는 코드를 작성해서 넘겨주고 나서 리팩토링을 하면서 이유를 설명할 수 있게끔 한 스펙을 만들어서 다음에 있을 최종 프로젝트에 임하도록 해야겠다.

주저리 주저리

  • 최종 프로젝트에 팀장으로 지원을 했다. 자신은 있지만, 부담이 된다. 내가 잘 못 이끌어서 나만 손해를 보면 자업자득이지만, 나를 믿고 같은 팀이 될 다른 분들을 위해서 더 열심히 움직여야 한다는 책임감이 막중하게 느껴진다.
  • 남들은 내가 잘 한다고 생각하지만, 사실 맞다. 난 잘해 ㅎㅎ 가 아니라 그런 말을 들을 때면 스스로 으쓱하다가도 억지로 어깨를 내린다. 모르는 개념, 이론이 한가득이고 정작 지금 내손으로 짠 코드도 잘 설명하지 못하는걸...
  • 최소한 내가 작동할 줄 아는 기능들은 알고쓰자!

오늘 배운 것

JPA Annotation

JPA를 사용하면 DB 데이터에 작업할 경우 실제 쿼리를 사용하지 않고 Entity 클래스의 수정을 통해 작업한다.

@Entity

실제 DB의 테이블과 매칭될 Class임을 명시한다.즉, 테이블과 링크될 클래스임을 나타낸다.

Entity Class

가장 Core한 클래스로 클래스 이름을 언더스코어 네이밍(_)으로 테이블 이름을 매칭한다.SalesManage스.java -> sales_manager table

Controller에서 쓸 DTO 클래스란??

Request와 Response용 DTO는 View를 위한 클래스로, 자주 변경이 필요한 클래스이다.
Entity 클래스와 DTO 클래스를 분리하는 이유는 View Layer와 DB Layer를 철저하게 역할 분리하기 위해서다.

테이블과 매핑되는 Entity 클래스가 변경되면 여러 클래스에 영향을 끼치게 되는 반면 View와 통신하는 DTO 클래스(Request/ Response 클래스)는 자주 변경되므로 분리해야 한다.

@Table

Entity Class에 매핑할 테이블 정보를 알려준다.
@Table(name = "USER")Annotation을 생략하면 Class 이름을 테이블 이름 정보로 매핑한다.

@Id

해당 테이블의 PK 필드를 나타낸다.

@GeneratedValue

PK의 생성 규칙을 나타낸다.가능한 Entity의 PK는 Long 타입의 Auto_increment

기본값은 AUTO로, MySQL의 auto_increment와 같이 자동 증가하는 정수형 값이 된다.

@Column

테이블의 컬럼을 나타내며, 굳이 선언하지 않더라도 해당 Class의 필드는 모두 컬럼이 된다.
@Column을 생략하면 필드명을 사용해서 컬럼명과 매핑

@Column(name = "username")**@Column을 사용하는 이유는 기본값 외에 추가로 변경이 필요한 옵션이 있을 경우 사용한다.

문자열의 경우 VARCHAR(255)가 기본값인데,
사이즈를 500으로 늘리고 싶거나(ex: title),타입을 TEXT로 변경하고 싶거나(ex: content) 등의 경우에 사용

 

문자열의 경우에는 상황을 고려하여 적절한 옵션을 사용하여야한다.

 

 

형태데이터형범위크기

숫자형 TINYINT -128 ~ 128 , 0 ~ 255 1 Byte
SMALLINT -32768 ~ 32767 , 0 ~ 65535 2 Byte
MEDIUMINT -8388608 ~ 8388607, 0 ~ 16777215 3 Byte
INT, INTEGER -2147483648 ~ 2147483647, 0 ~ 4294967295 4 Byte
BIGINT -9223372036854775808 ~ 9223372036854775807
0 ~ 18446744073709551615
8 Byte
FLOAT -3.402823466E+38 ~ -1.175494351E-38
1.175494351E-38 ~ 3.402823466E+38
4 Byte
DOUBLE [PRECISION], REAL 1.7976931348623157E+308 ~ -2.2250738585072014E-308
0 ~ 2.2250738585072014E-308
8 Byte
DECIMAL(M,D), NUMERIC(M,D) 데이터 베이스 설정 및 시스템에 따라 다름 가변적 크기
날자형 DATE '1000-01-01' ~ '9999-12-31' 3 Byte
TIME '-838:59:59' ~ '838:59:59' 3 Byte
DATETIME '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' 8 Byte
TIMESTAMP '1970-01-01 00:00:01' ~ '2038-01-19 03:14:07' 4 Byte
YEAR 1901 ~ 2155 1 Byte
문자(열)형 CHAR(M) 1~ 255 개의 문자 M <= 255 Byte
BINARY(M) 1 ~ 255 개의 문자 M Byte
VARCHAR(M), VARBINARY(M) 1 ~ 255 개의 문자 M Byte
TINYBLOB, TINYTEXT 최대 2^8 입력된 길이 만큼
BLOB, TEXT 최대 2^16 입력된 길이 만큼
MEDIUMBLOB, MEDIUMTEXT 최대 2^24 입력된 길이 만큼
LONGBLOB, LONGTEXT 최대 2^32 입력된 길이 만큼
ENUM 최대 65525 개 1 ~ 2 Byte
SET 최대 64 개의 셋 1 ~ 8 Byte

반응형

'항해99 > TIL' 카테고리의 다른 글

45일차-7/21 수 -항해99  (3) 2021.07.23
44일차-7/20 화 -항해99  (2) 2021.07.21
42일차_7/18_항해99 -6주차 WIL(회고록)  (0) 2021.07.18
41일차-7/17 토 -항해99  (0) 2021.07.18
40일차-7/16 금 -항해99  (0) 2021.07.17

댓글