[F-Lab 모각코 챌린지] 46일차 - JDBC Connection (3)
F-Lab 모각코 챌린지 46일차. JDBC 의 Connection(3일차) 공부 기록 입니다. 클래스를 공부하며 몰랐던 키워드들과 함께 정리하였습니다.
![[F-Lab 모각코 챌린지] 46일차 - JDBC Connection (3)](/content/images/size/w1200/2023/07/f_lab_mogacko-7.png)
void setReadOnly(boolean readOnly) throws SQLException;
boolean isReadOnly() throws SQLException;
void setCatalog(String catalog) throws SQLException;
String getCatalog() throws SQLException;
int TRANSACTION_NONE = 0;
int TRANSACTION_READ_UNCOMMITTED = 1;
int TRANSACTION_READ_COMMITTED = 2;
int TRANSACTION_REPEATABLE_READ = 4;
int TRANSACTION_SERIALIZABLE = 8;
void setReadOnly(boolean readOnly) throws SQLException;
연결을 읽기 전용 모드로 설정한다.
이 설정은 트랜잭션 도중에 호출할 수 없다.
💡
왜 트랜잭션 도중에 호출할 수 없을까, 충분히 만들 수 있지 않을까 하여 검색하던 도중, ACID 를 준수하기 위해서라는 답 밖에 찾지 못했다. 하지만 재미있는 글을 찾았는데, 아직 읽기에는 버거운 지식이지만 나중에 Connection 클래스를 이해하고 Database 쪽을 공부 할 때 도움이 될 것 같아 링크 남겨둔다.
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-basic.html
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-basic.html
boolean isReadOnly() throws SQLException;
readOnly 값을 확인하는 메서드
void setCatalog(String catalog) throws SQLException;
해당 Connection 객체의 Database 에서 작업 할 서브스페이스를 선택하기 위해 카탈로그 이름을 설정한다
- 카탈로그란, 데이터베이스에서 객체(테이블, 뷰, 인덱스 등)들을 그룹화 하고 구조화 하는 논리적인 컨테이너 이다. 데이터베이스 스키마(Schema) 의 상위 개념이라고 이해 하면 편하다.
String getCatalog() throws SQLException;
설정 되어 있는 카탈로그 이름을 확인한다
트랜잭션 상수
- int TRANSACTION_NONE = 0;
트랜잭션을 지원하지 않음 - int TRANSACTION_READ_UNCOMMITTED = 1;
한 트랜잭션에서 변경 한 변경 사항을 커밋되기 이전에 읽을 수 있다. - int TRANSACTION_READ_COMMITTED = 2;
커밋된 변경 사항 만을 읽는다.
Phantom read 가 발생할 수 있다. - int TRANSACTION_REPEATABLE_READ = 4;
Non-repeatable read 를 방지하는 설정이다.
Transaction-A 가 하나의 첫번째 행을 읽을 때, Transaction-B 가 두번째 행을 변경했다. 이 때 Transaction-A 가 두번째 행을 조회 한 경우를 방지한다는 말이다. 해당 옵션을 사용하면 트랜잭션 내에서 같은 쿼리를 반복 실행했을 때, 일관성을 보장한다 - int TRANSACTION_SERIALIZABLE = 8;
Phantom read 와 Non-repeatable read 를 방지한다.
Phantom read 발생 상황: 결과 집합이 변경되는 상황