db
-
DB 인터페이스 분리개발/java 2024. 10. 28. 17:41
RDB , SNOWFLAKE , Athena 등 DB를 다양하게 사용하는 경우가 있을 수가 있다. 예를 들어 큰 DB를 읽어 오는데 부담 될때 특정 조건에 따라 RDB -> SnowFlake나 S3로 적재된 Athena를 콜 하는 방식말이다 이 경우 Mybatis를 사용하는 개발자들은 각각의 DB 정보를 이용해 Config를 등록하며 이를 mybatis sqlSessionFactory에 연결한 후 이를 특정 어노테이션을 붙이면 해당 method를 mapper.xml에 있는 method를 연결하도록 구현을 할 것 이다 예를 들어 @Athena , @Snow 라는 애노테이션을 인터페이스에 연결만 한다면 Mybatis로 연동하는 방식이다 예를 들면 @Configuration@RequiredArgsConst..
-
mybatis로 jpa 흉내내기개발/java 2024. 9. 3. 13:18
mybatis의 경우 jdbc를 통해 코드와 db를 혼합하여 작성하는 방식에서 둘을 분리하게 구현함으로써 유지 보수 및 개발을 함에 있어 간편하고 쉽게 만들었다 그 이후 JPA가 도입됨에 따라 DB table에 따라 구현하는 방식이 서비스를 구현하는 것이 아닌 실 서비스를 세분화하여 ORM에 좀 더 다가갈 수 있게 되었다 그러나 특정 이유로 JPA를 사용하지 못하는 경우 mybatis에서 제공하는 new SQL() 과 ProviderMethodResolver를 통해서 별도 쿼리 작성 없이 동적으로 만들 수 있는 방법이 있다. import org.apache.ibatis.builder.annotation.ProviderMethodResolver;//mybatis 인터페이스 ProviderMethodRe..
-
싱글턴 문제점과 해결책개발/java 2024. 9. 2. 11:55
자바의 경우 싱글턴 패턴으로 이루어져 있다 예를 들어 동일 서비스를 10번 호출을 하게 되면 10번을 새로운 서비스로 인지해서 비효율적이니 1번의 호출만 새로운 서비스로 인식하고 나머지 9번을 1번을 호출된 서비스를 받아 처리하는 구조이다. 이 경우 상태를 체크하는 부분에서 문제가 발생할 수 있다. 예를 들어 멀티스레드로 구성된 경우 주문을 접수를 하는 고객이 여러번 주문생성이 가능한 구조라면 여러가지 상태 체크를 무시하는 경우가 발생할 수 있다. 이를 방지하는 경우는 여러가지가 있으나 그중 DB를 통해 resource lock을 걸어 제어하는 방법이 있다. 방식 1. 서비스 시작 시 특정 키를 통해 db를 insert 한다 2.서비스 수행 도중 해당 키를 통해 유입된 경우 유입을 대기 한다 3.서비..