| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- maven
- database
- gson
- nginx
- springboot
- Linux
- JPA
- LOG4J
- Kubernetes
- MySQL
- mybatis
- docker
- nodejs
- Git
- BPMN
- Java
- react
- JavaScript
- useEffect
- IntelliJ
- tibero
- Spring
- dbeaver
- log4j2
- VSCode
- kubectl
- SAP
- gradle
- Windows
- NCP
- Today
- Total
목록전체 글 (268)
두 손끝의 창조자
메인 모듈에 mapper 가 있는데 테스트 모듈에서 매퍼 파일을 못 읽어서 Mapped Statements collection does not contain value for 와 같은 예외가 발생할 수 있다. 대부분의 경우 id를 잘 못 넣은 케이스지만 매퍼 파일 자체를 해당 모듈에서만 읽어서 발생하는 문제일 수 있다. String MYBATIS_MAPPER = "classpath*:/mappers/**/*.xml"; 매퍼 경로를 위와같이 변경하고 시도해보자.
프로젝트에서 여러가지 DataAccess 기술을 쓰고 있는데 한 트랜잭션에서 다양한 기술을 사용할 때는 유의 할 점이 있다. JPA에서 데이터를 저장하고 난 뒤 flush를 해야 다른 기술에서 그 데이터를 확인 할 수 있다. mybatis도 유사한 기능이 있는데 캐시를 가지고 있어서 flush를 해줘야한다. 이 캐시 자체의 범위를 조정하거나 쓰는 옵션이 있는데 링크를 참조. [오픈소스] MyBatis 내장 cache에 대해서 (tistory.com)
MappedStatement mappedStatement = sqlSession.getConfiguration().getMappedStatement(s); List resultMaps = mappedStatement.getResultMaps(); ResultMap resultMap = resultMaps.get(0); Class type = resultMap.getType();
EntityManagerFactory는 DataSource와 연관되어 있다. 스프링 환경에서 사용하는 경우 EntityManagerFactory는 빈으로 등록해서 사용하는게 효율적이라 등록 후 사용중이라면 ApplicationContext에서 Factory를 가져올 수 있다. @Transactional 로 트랜잭션 관리를 한다면 @PersistentContext 애노테이션으로 쉽게 현재 스레드의 EntityManager를 가져올 수 있다. @PersistentContext EntityMager em; 그러나 트랜젝션을 직접 관리한다면 아래 방법으로 가져올 수 있다. EntityManager em = EntityManagerFactoryUtils.getTransactionalEntityManager(emf);