본문 바로가기
Project

취업 준비, 프로젝트 리팩토링(4)

by newny 2023. 8. 7.
반응형

리팩토링 순서

1. 테이블 재정의 → 테이블 정의서 새로 만들기 [20230727 테이블 정의서 완료]
2. erd 재정의 → 기존 erd 수정하기 [20230728 erd 수정 완료]
3. jar로 배포 → 기존 jsp 사용으로 인해 war로 설정했던 부분을 jar로 변경 [20230730 프로젝트 생성 완료]
4. 패키지 구조 변경 → 정리되어있지 않은 기존의 패키지 구조(특히 repository부분)를 변경 [20230730 구조 변경 완료]
5. 템플릿 엔진 thymeleaf로 바꾸기 → 기존의 jsp의 흔적 없애기, 불필요한 페이지나 버튼 제거 [20230731~ 진행 중]
6. 재정의된 테이블 구조에 맞는 프로젝트로 코딩 [20230731~ 진행중]
7. mybatis를 jpa로 변경(아직 공부가 안된 부분이 있어서 가장 마지막에 변경예정)

 

현재 리팩토링 진행상태 (5번, 6번 함께 진행중)

회원가입, 로그인, 로그아웃 구현 완료

호스트 페이지 회원가입, 로그인, 로그아웃 구현 완료

호스트 페이지 상품등록, 상품목록 구현 완료

 

오늘의 강의 공부

트랜잭션 ACID

원자성(Atomicity) : 원자처럼(원자는 절대 깨지지 않는것 처럼) 마치 하나의 작업인것처럼

일관성(Consistency) : 무결성 제약 조건 항상 만족

격리성(Isolation) : 동시에 같은 데이터를 수정하지 못하도록

지속성(Durability) : 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 함

 

격리성 → 완전한 격리성을 보장하려면 직렬처리가 가장 적합하나, 성능이슈가 생기기 때문에 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다.

 

수동 커밋 모드

set autocommit false;

 

락(lock)

SET LOCK_TIMEOUT 10000 (10초안에 락을 얻지 못하면 LOCK TIMEOUT 오류 발생됨)

 

select 문에 락 걸기 (for update)

select * from member where member_id=’memberA’ for update;

 

학원에서 오라클db를 배운덕에 수동커밋의 개념을 알고있어서 트랜잭션 기초강의 부분은 쉽게 이해 할 수 있었다.
트랜잭션 나머지 강의를 다 듣고 현재 리팩토링중인 프로젝트에 적용해볼 예정이다.
반응형

댓글