마트철수
[047] 트랜잭션, JDBC 프로그래밍 본문
2024.07.15(월)
MySQL 4일차
ConnectionTest.java 파일 제작부터
왜 이 파일을 제작하고 있는지 이해하지 못하고 코드를 작성함 ..
> 이론 다시 듣고, 코드 천천히 읽어보기!
이것이 MySQL이다
PART01 MySQL 설치 및 DB 구축과정 미리 실습하기
- CH01 DBMS 개요와 MySQL 소개
- CH02 MySQL 설치
- CH03 MySQL 전체 운영 실습
PART02 MySQL 기본
- CH04 데이터베이스 모델링
- CH05 MySQL 유틸리티 사용법
- CH06 SQL 기본
- CH07 SQL 고급
PART03 MySQL 고급
- CH08 테이블과 뷰
- CH09 인덱스
- CH10 스토어드 프로그램
- CH11 전체 텍스트 검색과 파티션
추가자료: 트랜잭션
하나의 단위로 데이터를 처리하는 트랜잭션
트랜잭션
: 더 이상 분할할 수 없는 최소 수행단위
- 하나 이상의 데이터 조작 명령어(DML)로 구성
- ALL ROR NOTHING
- CRUD에서 C, R, D는 트랜잭션 작업이 필수임
트랜잭션
- START TRANSACTION
- COMMIT
- ROLLBACK
▶ DML 명령에 대해서만 적용
▶ 2개 이상의 INSERT, UPDATE, DELETE 문을 실행할 때 트랙잭션 처리 필요(C, U, D)
▶ COMMIT 실행하면, 다시 복원할 수 없음(백업데이터가 있으면 가능하긴 함)

※ 지금까지 AUTO COMMIT 모드여서 처리하지 않아도 됐었음
SELECT @@autocommit;
: MySQL의 환경변수 / 이 기능이 켜져있는지 확인하는 변수임
: 두 개 이상의 수정문이 실행될 때, 트랜잭션이 필요함!
ch10 JDBC 프로그래밍
JDBC 프로그래밍
JDBC(Java Database Connectivity)
: 데이터베이스와 연결해서 입출력을 지원
JDBC 프로그래밍
데이터베이스 준비: CREATE DATABASE jdbc_ex;
- 이후 실습 파일 확인 -
.
.
.
PreparedStatement
: "VALUES(?, ?, ?, ?)";
# 미리 컴파일(준비)해두겠다
# SQL 문을 실행할 때 매개변수화된 쿼리를 실행하는 데 유용 → 속도도 빠름
실습
▼ 테이블 만들기
-- usertable 생성
DROP TABLE IF EXISTS usertbl;
CREATE TABLE usertbl(
-- CHAR: 고정문자, NOT NULL: 필수, PRIMARY KEY: 기본 키
userID CHAR(8) NOT NULL PRIMARY KEY,
-- VARCHAR: 가변문자
name VARCHAR(10) NOT NULL,
-- INT: 정수형
birthYear INT NOT NULL,
addr CHAR(2) NOT NULL,
-- NULL: 옵션
mobile1 CHAR(3) NULL,
mobile2 CHAR(8) NULL,
-- SMALLINT: 작은정수형
height SMALLINT NULL,
-- DATE: 날짜형
mDate DATE NULL
);
-- AUTO_INCREMENT: 인덱스 자동 증가
num AUTO_INCREMENT INT NOT NULL primary KEY,
-- FOREIGN KEY(해당 키) REFERENCES 참조할 테이블(참조할 키)
-- 다른 테이블의 기본키를 참조하는 외래키
FOREIGN KEY(userid) REFERENCES usertbl(userID)
▼ 기본키 제약조건
-- CONSTRAINT PRIMARY KEY: 기본키 제약조건
CONSTRAINT PRIMARY KEY PK_userTBL_userID(userID)
-- 제약조건명은 생략 가능
-- prodCode와 prodID 컬럼을 합쳐서 복합키로 기본키를 만들었다
CONSTRAINT PK_prodTbl_proCode_prodID
PRIMARY KEY(prodCode, prodID)
▼ 데이터베이스 생성
-- 데이터베이스 생성
CREATE DATABASE jdbd_ex;
-- CREATE USER: 'jdbd_ex'라는 이름의 사용 생성
-- IDENTIFIED BY: 비밀번호를 'jdbc_ex'로 설정
CREATE USER 'jdbc_ex'@'%' IDENTIFIED BY 'jdbc_ex';
-- GRANT ~ ON: 권한 부여
-- ALL PRIVILEGES: 모든 권한 부여
-- 'jdbd_ex'라는 사용자에게 jdbc_ex 데이터베이스 내의 모든 권한 부여
GRANT ALL PRIVILEGES ON jdbc_ex.* TO 'jdbc_ex'@'%';
-- FLUSH: 권한 즉시 서버에 적용
FLUSH PRIVILEGES;
▼ JUNIT
import org.junit.jupiter.api.*;
public class JunitCycleTest {
@BeforeAll // 전체 테스트 시작전 1회 실행, static 선언
static void beforeAll() {
System.out.println("@BeforeAll");
}
@BeforeEach // 테스트 케이스를 시작하기 전마다 실행
public void beforeEach() {
System.out.println("@BeforeEach");
}
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void test3() {
System.out.println("test3");
}
@AfterEach // 테스트케이스를종료하기전마다실행
public void afterEach() {
System.out.println("@AfterEach");
}
@AfterAll // 전체테스트를마지고종료하기전1회. static 선언
static void afterAll() {
System.out.println("@AfterAll");
}
}
▼ JDBC를 사용하여 MySQL 데이터베이스에 연결하기 위한 필수적인 정보들
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/jdbc_ex
id=jdbc_ex
password=jdbc_ex
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [049] MySQL: 인덱스 (+ScoularTodo 제작) (1) | 2024.07.17 |
|---|---|
| [048] 뷰&정규화 과정 (+JDBC 프로그래밍 중요코드) (1) | 2024.07.16 |
| [046] 프로그래머스: 재귀와 완전탐색 (0) | 2024.07.12 |
| [045] SQL 고급 / 테이블과 뷰 (0) | 2024.07.11 |
| [044] SQL 기초 / SQL 고급 (0) | 2024.07.10 |