데이터 입,출력은 소프트웨어의 기능 구현을 위해 데이터베이스에 데이터를 입력하거나 데이터베이스의 데이터를 출력하는 작업을 의미한다.
데이터를 조작하는 모든 행위는 SQL을 사용한다.
SQL을 통해서 데이터베이스의 조작을 수행할 때 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 모든 일련의 연산들을 트랜잭션이라고 한다.
SQL은 국제표준 데이터베이스 언어로 많은 회사에서 관계형 데이터베이스를 지원하는 언어로 채택하고 있다.
데이터 정의어(DDL) : 스키마, 도메인, 테이블, 뷰, 인덱스를 정의할 때 사용하는 언어
테이블 관련 된 것들로 생각하면 알기 쉽다. ex) CREATE, ALTER, DROP
데이터 조작어(DML) : 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어이다.
테이블 안의 데이터 관련된 것들로 생각하면 알기 쉽다. ex) INSERT, DELETE, UPDATE
데이터 제어어(DCL) : 데이터의 보안 무결성 회복 병행 수행 제어 등을 정의하는데 사용하는 언어이다.
흔히 COMMIT, ROLLBACK, GRANT, REVOKE 를 떠올리면 된다.
데이터 접속은 소프트웨어의 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터를 연결하는 것을 말하며, 관련 기술로 SQL Mapping과 ORM이 있다.
SQL Mapping: 프로그래밍 코드 내에 SQL을 직접 입력하여 DBMS의 데이터에 접속하는 기술로, 관련 프레임워크에는 JDBC,ODBC,MyBatis등이 있다.
ORM: 객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터를 연결하는 기술로, 관련 프레임워크에는 JPA, Hibernate, Django등이 있다.
JDBC는 디비에서 접근할 수 있도록 자바에서 제공하는 API이다.
JPA는 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해준다.
JPA는 관계형 데이터베이스의 '관계'를 Object에 반영하는것이 목적이다. 자바의 객체와 테이블의 차이점에서 오는 모순을 해결해준다.
JDBC는 단순히 필드를 매핑시키는 것이 목적이라는 점에서 지향점의 차이가 있다.
sql 중심적인 개발에서 객체 중심적인 개발이 가능하다. 개발자들이 반복적인 sql 코드를 개발하면서 개발자 == sql매퍼라고 할 만큼 작업량이 많다.
필드에서 칼럼 하나 추가할 때, 모든 sql에 칼럼을 추가해야한다. 하지만 JPA를 사용한다면 그럴 일이 없다.
데이터 입 출력에 필요한 일련의 연산들이 포함된 하나의 작업 단위를 트랜잭션이라고 한다.
트랜잭션에 필요한 명령어를 TCL이라고 한다.
TCL은 COMMIT, ROLLBACK, SAVEPOINT가 있다.
COMMIT : 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 명령어
ROLLBACK : 하나의 트랜잭션 처리가 비정상으로 종료되어 데이터베이스의 일관성이 깨졌을 때 트랜잭션이 행한 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산
SAVEPOINT : 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어
참고자료: https://thefif19wlsvy.tistory.com/249 [FIF's 코딩팩토리]