https://github.com/codingspecialist/java-jdbc/tree/main
DAO란? - DB와 상호작용 한다… (이후에 설명 O)
DAO는 데이터베이스나 다른 저장소에 접근하여 데이터를 읽고 쓰는 역할을 하는 객체 (DAO는 웹 애플리케이션에서 데이터베이스와의 상호작용을 담당한다.) 사용자가 애플리케이션에서 어떤 데이터를 요청하면 DAO는 해당 데이터를 데이터베이스에서 찾아서 가져온다. 또는 사용자가 새로운 데이터를 입력하면 DAO는 데이터를 데이터베이스에 저장한다.
0. MariaDB JDBC 라이브러리 등록
MVN 레파지토리 (https://mvnrepository.com/) 에 가서, MariaDB JDBC 라이브러리 등록해보자. dependencies에 붙여넣자.
DBMS와의 연결을 위해 해당 DBMS 제조사에서 제공하는 JDBC 라이브러리를 사용해야 함. (프로토콜과 DBMS 특정 동작에 대한 구현을 포함하고 있기 때문에!)
여기서 마리아db 라이브러리가 제대로 다운 받아졌는지 확인하기~
JDBC 라이브러리
JDBC라는 라이브러리를 사용해 DBMS와 연결하고 데이터베이스 작업을 수행할 것 SELECT, INSERT, UPDATE, DELETE 쿼리문을 작성할 수 있는데, INSERT, UPDATE, DELETE는 Write라서 결과를 받을때 int로 받을 수 있다. (프로토콜 (1 , 0, -1 등 행의 변경 개수를 리턴) 로 받는다.)
각 컬럼마다 다른 타입을 가지고 있기 때문에 클래스를 사용해서 데이터를 담는다.
(String으로 받은건 파싱했다고 안 함! 클래스로 받아야한다!)
+) my.ini / utf8mb4
HeidiSQL도 라이브러리를 쓰고 있다.
MySQL과 MariaDB는 같은 포트 번호인 3306을 사용한다. 두 DBMS가 MySQL 프로토콜을 공유하기 때문! (MariaDB 뿌리가 mySQL) 그래서 2개가 다 깔려 있다면, 시작 유형 을 mysql을 수동으로 바꿔줘서 mariaDB에서 포트번호 3306을 쓸 수 있도록 설정하면 된다.
[ my.ini 데이터 설정 파일 ]
my.ini를 메모장으로 열면, 버퍼 사이즈도 볼 수 있고 (2030M) 포트 번호도 확인 가능!
[ utf8mb4란? ]
UTF8은 1~4바이트의 가변 바이트 체제. 영어는 1바이트, 한글은 3바이트, 이모지는 4바이트로 해석. 모든 데이터를 일관성 있게 다루지 않아서 가변 바이트 체제라고 한다.
[ utf8mb4 ] mysql에서는 이모지 쓸 필요 있나ㅎㅎ 해서 1~3 바이트 코드로 만들었다. 때문에 이모지 저장을 못함. 그래서 만든게 utf8mb4 = 이모지까지 되는 utf8. 원래는 그냥 utf8…이지만 이런 사유로 딱 데이터 베이스에서만 utf8mb4이 되어버림.
1. MariaDB에서 데이터 베이스와 테이블을 만들어보자 +UTC
HeidiSQL 툴을 사용해서 테이블을 작성했다.
데이터베이스는 테이블의 모임
1. 데이터 베이스 작성
데이터 베이스 이름 = COSdb
개발자는 결과를 꼭 확인하자! (syntax = 문법)
2. 테이블 작성
테이블 작성하기 전에 데이터 베이스가 선택되어 있는지 확인하자!
CREATE TABLE account_tb( number int primary KEY AUTO_INCREMENT, password varchar(100) not null, balance int not null, created_at timestamp not null ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DEFAULT CHARSET=utf8mb4; 를 안 적어도 되긴 함.
그러나 다른 사람이 만든 데이터 베이스 코드를 써야할 때가 온다.
나는 이 테이블을 utf8로 쓰고 있는데... 그사람은 utf8이 아닐 수도 있다.
그때 필요한 게 이것!
무조건 DEFAULT CHARSET=utf8mb4;를 습관처럼 끝에 붙여라!
우리가 테이블 만들 때 컨벤션 = _tb를 한다.
[ 테이블 타입 설명 ]
단순히 INT만 있는게 아니라, TINYINT, SMALLINT 등 여러개가 있다. db에서 int는 4바이트 더 큰 수를 저장하려면 BIGINT 데이터 타입을 사용하면 된다. TINYINT는 MariaDB에서 사용되는 정수형 데이터 타입 중 하나로, 1바이트(8비트) 크기
[ 문자형 ]
varchar()는 글자의 길이를 나타내는 데이터 타입. 즉, 문자의 수를 나타내는 것이지 바이트의 수를 나타내는 것이 아니다. varchar(100)이라고 쓰면, 한글을 넣든 영어를 넣든 100글자까지 가능
[ timestamp ]
timestamp는 1970-01-01 ~ 2038-01-19 까지 저장할 수 있다. (db에서 날짜는 민감한 것!) 1970-01-01부터 전세계적 표준시를 정하기 시작해서 timestamp가 1970-01-01부터 저장한다. (MySQL에서 TIMESTAMP 데이터를 사용할 때, 일반적으로, 내부적으로 UTC로 저장된다) UTC = 협정 세계시 (이걸 공부해야함) KST = 한국 표준시
[ UTC ]
UTC는 세계적으로 표준화된 시간 표현 방식. 지구상의 다양한 지역과 시간대에서 동일한 시간을 나타내기 위해 사용된다. UTC는 타임존의 영향을 받지 않으며, 지구상의 모든 지역에서 동일한 시간을 공유한다. 따라서 협정 세계시를 사용하면 시간을 일관되게 표시하고 비교할 수 있다. (많은 컴퓨터 시스템 및 네트워크 시스템에서는 UTC를 기준으로 시간을 관리하고 표시)
Share article