기타 7

JPA Tips

엔티티 매니저는 트랜잭션 별로 생성된다(스프링 기본). 엔티티 매니저는 영속성 컨텍스트를 가지고 있고 1차 캐시의 역할을 하게 된다. 이로 인해 애플리케이션 수준의 반복 가능한 읽기가 가능하다(DBMS의 Repeatable Read와 별개로). 이를 위해 엔티티매니저를 통해 읽기를 할 때 1차 캐시에 이미 해당 영속성 객체가 있다면 DB에서 조회하지 않고 이를 반환한다. 또한, JPQL을 통해 쿼리를 하면 영속성 컨텍스트를 확인하지 않고 바로 DB에서 가져오는데 가져온후에 영속성 컨텍스트에 이미 해당 객체가 있다면 DB에서 가져온 객체를 버리고 영속성 컨텍스트에 있는 값을 반환한다. 영속성 컨텍스트에는 1차 캐시와 쓰기 지연 SQL 저장소가 있다. flush를 할 때 쓰기 지연 SQL에 있는 쿼리가 발생..

기타 2022.12.19

ArchUnit을 이용한 패키지 의존성 테스트하기

ArchUnit을 이용한 패키지 의존성 테스트하기 최근 클린아키텍처 스터디를 하면서 헥사코날 아키텍처를 테스트 하는 것에 대한 논의가 있었다. 여러 논의가 오갔고 이상적인 것은 테스트를 자동화하는 것이었다. 책에 나온 ArchUnit 으로 해당 테스트를 자동화 하는 것을 찾아보았다. ArchUnit https://www.archunit.org/ ArchUnit is a free, simple and extensible library for checking the architecture of your Java code using any plain Java unit test framework. Maven & JUnit5 com.tngtech.archunit archunit-junit5 0.23.1 test ..

기타 2022.03.30

DSM을 이용하여 IntelliJ 에서 패키지 간 의존성 확인하기

DSM(Dependency Structure Matrix) 프로젝트를 진행 할 때 정적으로 아키텍처를 점검해야 하는 경우가 종종 있다. 이때 여러 툴을 사용하는데 DSM을 사용하면 모듈간의 의존성을 한눈에 확인할 수 있다. DSM 이란? DSM은 모듈간의 관계를 2차원 매트릭에 나타낸 테이블. 테이블을 통해서 모듈간의 의존관계 / 의존강도 / 순환사이클 등을 확인할 수 있다. DSM 보는 방법 위 모듈에서 왼쪽 모듈에 X번 의존한다 A는 C에 의존한다. C는 A/B에 의존한다. 열과 행을 포개었을때 둘 다 값이 있으면 순환의존이다 C -> A -> C 포개었을 때 둘다 값이 있다는 뜻은 서로 간에 의존이 있다는 뜻이기 때문에 순환 의존관계이다. 의존 숫자가 유독 높다면 의존이 너무 많이 몰려있다는 뜻이다..

기타 2022.03.30

JPA 동시성 문제

DB의 동시성 문제 read -> write 시 동시에 한 레코드에 두 개 이상의 트랜잭션이 접근하면 일관성이 깨지게 된다 이를 해결 하는 방법은 격리성 레벨을 시리얼로 하거나 Lock을 건다 Lock 비관적 Lock 특정 레코드에 lock을 걸어서 트랜잭션이 끝날때까지 다른 트랜잭션이 접근을 못하게 한다. https://isntyet.github.io/jpa/JPA-%EB%B9%84%EA%B4%80%EC%A0%81-%EC%9E%A0%EA%B8%88(Pessimistic-Lock)/ 효율성이 떨어지는 단점 낙관적 Lock 엔티티에 버전 필드를 만들어서 여러 트랜잭션이 동시에 접근은 가능하지만 이미 다른 트랜잭션이 값을 변경한 경우 내가 다시 업데이트를 하려고 하면 익셉션 발생하게 됨. https://is..

기타 2021.07.20

WIN-ACME 사용법(Windows에서 Letsencrypt 인증서 생성하기)

사전 작업80 port openhttps://www.win-acme.com/ 에서 win-acme 다운로드openssl 설치https://code.google.com/archive/p/openssl-for-windows/downloads인증서 생성 방법wacs 실행  참고로 위 화면은 너무 많은 인증서를 만들면서 거부된 결과임. 해당 화면 뜨면 7일동안 인증서 발급 금지되니 조심할 것.D:\win-acme\keys 폴더에 pem 파일 두개 생성됨.pem → pkcs12 변경windows cmd 에서 아래와 같이 입력D:\win-acme\keys>openssl pkcs12 -export -out keystore.p12 -in xxx.com-chain.pem -inkey xxx.com-key.pemLoadi..

기타 2019.12.10