본문 바로가기

분류 전체보기363

Spring Repository 와 Entity 영속성 컨텍스트의 관계 파악 Spring Repository 와 Entity 영속성 컨텍스트의 관계 파악 Spring Repository 와 EntityManager 관계 하나의 서비스에서 (같은 스레드) 여러 개의 repository 를 호출한다고 해보자. 2개의 repository 는 1개의 EntityManager 를 공유하게 됨. 같은 스레드에서 순차적으로 호출할테니 동시성 문제는 없겠지. Spring 에서 Entity 변경 시, 일어나는 과정 Controller —> Service —> Repository select, save 호출 이라고 가정. Controller 에는 Transaction 설정이 안돼있다면 Repository.save 를 호출하는 순간 Transaction 이 만들어지고 자동으로 커밋이 이루어질 것이다.. 2020. 11. 19.
엔티티 매니저 왜 thread-safe 하도록 해야하는지? 엔티티 매니저 왜 thread-safe 하도록 해야하는지? EntityManagerFactory 는 thread-safe 한 처리가 돼있음. EntityManager 는 thread-safe 한 처리가 안돼있음. 그렇기에 EntityManager 는 여러 스레드에서 접근하면 안된다. EntityManager 를 통해 DB 에 접근해서 데이터를 CRUD 할텐데. 그 안에서 여러 스레드가 들어와서 데이터를 마구잡이로 바꾼다면 데이터 동시성 보장이 안된다. 2020. 11. 18.
Index 란? (클러스터드, 넌 클러스터드 설명) Index 란? 데이터를 검색할 때, 모든 데이터를 순차 검색하기에는 시간이 너무 오래 걸림. 그렇기에 메모리를 사용해 검색 속도를 빠르게 하기 위한 기법이다. B+tree 알고리즘을 사용하며, Hash 알고리즘을 안쓰는 이유는 '' 비교가 안되기 때문이다. 클러스터드 인덱스 순서대로 행을 재배열 PK 를 설정하면 자동으로 클러스터드 인덱스로 설정이 됨. 예를 들면, ID, 거래일 이 PK 이면, 2020-01-01, 2019-12-31 순으로 데이터를 넣으면 물리적으로 날짜를 정렬한 후 저장이 돼있음. 2019-12-31, 2020-01-01 순으로. 1개만 만들 수 있음. PK 에 따라 데이터 저장 위치가 결정되니 조회시에는 빠르겠지만, 수정, 삭제, 삽입은 느리겠지. PK 에 따라 다.. 2020. 11. 15.
Sql 과 nosql 차이점 그리고 언제 써야하는지 Sql 과 nosql 차이점 그리고 언제 써야하는지 Sql : 관계형 데이터베이스 정해진 데이터 스키마를 따라 테이블에 저장 테이블 간의 관계를 통해 원하는 데이터를 뽑아낸다. 데이터가 수직적 확장만 지원 (성능). 데이터 구조 때문에 데이터 무결성 보장. Nosql : 비관계형 데이터베이스 스키마 없고. 즉, 이 말은 서로 관계 없는 데이터 구조를 같은 컬렉션(테이블) 에 저장할 수 있음. 관계 없음. 조인 없음. 동일한 데이터가 들어갈 수 있기에 자주 변하지 않는 데이터를 저장할 때 좋음. 여러 서버에 데이터 확장이 가능 (수평적) 자주 안바뀌는 데이터를 저장하기에 좋겠지. 2020. 11. 14.