본문 바로가기

전체 글61

트랜잭션(Transaction) 문서 작업하면서 트랜잭션 때문에 고생했다.. 대충대충 알던 개념을 자세하게 조사하자니 힘들었다ㅎ... 1. 트랜잭션(Transaction) - 데이터베이스의 상태를 변환시키는 하나의 논리적인 기능을 수행하는 작업의 단위 - 한번에 모두 수행되어야 하는 연산들 2. 트랜잭션 성질(ACID) 성질 설명 원자성 (Atomicity) 트랜잭션에 포함된 작업은 전부 수행되거나 전부 수행되서는 안된다. (all or nothing) 일관성 (Consistency) 트랜잭션을 수행하기 전이나 수행 후나 데이터베이스는 항상 일관된 상태를 유지해야 한다. 고립성 (Isolation) 트랜잭션 수행 중 다른 트랜잭션으로 인해 변경 중인 데이터 값을 훼손하는 일은 없어야 한다. 지속성 (Durability) 수행을 완료한 .. 2020. 3. 28.
[Spring boot] 다중 데이터베이스 연결 회사에서 문서 작업을 하며 mybatis에서 다중 데이터베이스 연결을 시도했다. 전 프로젝트를 진행하면서 JPA를 이용해서도 연결을 했었는데 그건 나중에 포스팅 하도록 하겠다. 1. 프로젝트 구조 config 폴더는 모든 설정을 관리하는 폴더입니다. 'OneDataSourcrConfig'는 첫번째 데이터베이스 연결에 관한 설정이고, 'TwoDataSourceConfig'는 두번째 데이터베이스입니다. 각각 데이터베이스에 대한 Controller, Service, DAO, Domain은 폴더를 만들어 관리합니다. 간단하게 'test1', 'test2'로 설정했습니다. 가장 중요한 점은 Config 폴더의 위치입니다. Config에는 Domain, Mapper.xml 폴더 경로를 입력하는 코드가 있기 때문에 .. 2020. 3. 14.
[Database] RDBMS, NoSQL, In-memory Database Spring boot 프로젝트를 생성할 때 dependency 추가에서 SQL 항목에 있는 데이터베이스들을 전부 조사하다가 In-memory database라는걸 알게 되었다. RDBMS랑 NoSQL은 자주 들어서 알고 있었는데 인메모리 데이터베이스는 처음 들어봐서 조사를 해보다가 정리한 내용들을 포스팅하려고 한다. 1. RDBMS (Relational DataBase Management System) - 관계형 데이터베이스입니다. - 예로 MySQL, Oracle, MSSQL, PostgreSQL이 있습니다. - 효율적, 안정적, 안전한 데이터 저장소입니다. - 대용량 데이터를 영구적으로 저장, 관리, 접근할 수 있습니다. - 테이블마다 스키마를 정의해야합니다. - SQL을 통해 요청을 처리합니다. -.. 2020. 3. 10.
[Spring boot] Mockito 1. Mock Object(모의 객체) Mockito를 알아보기 전 Mock에 대해서 알아야 할 필요가 있습니다! Mock이란 가짜 객체를 의미합니다. 예를들어, 첨부파일을 업로드하고 삭제하는 기능을 테스트 한다고 가정하였을 때 html 화면까지 구성하고 데이터베이스에 연결하여 첨부파일을 넣고 삭제하고... 무언가 이상하면 코드를 수정하고 Spring이 실행될 때 까지 기다렸다가 화면에서 업로드하고 삭제를 반복해야하는 번거로움을 가지게 됩니다. 만일 테스트 코드를 작성하며 Mock 객체를 이용하게 된다면 화면 구성도 필요 없이 테스트 메소드 안에서 File이라는 객체를 가상으로 만들어 주어 테스트 코드에서 객체에 내용을 담아주고 테스트를 시행 할 수 있게 됩니다. (이해가 가시나요ㅎㅎ..) 2. Mock.. 2020. 3. 8.