DB쪽을 엄청 빠삭하게 아는건 아니지만 JPA 사용하다가 DB 마다의 구조적 차이점이 꽤 영향을 주는걸 알게 되면서 간단하게 남겨본다. 보통은 데이터베이스 - 스키마 - 테이블 구조로 되어있고 데이터베이스 설정을 하고 엔티티에서 테이블 이름만 지정해놓고 사용하면 기본 디폴트 스키마를 기준으로 테이블 조회를 하게 되는데 다른 데이터베이스나 스키마를 다중 참조해야 할 때, 이 부분이 DB마다의 계층구조로 약간 상이해지는걸 발견했다. 모든 DB의 구조를 잘 안다면 큰 문제가 없었겠지만, 몇가지 DB만 쭉 사용하다가 어쩌다가 다른 DB를 쓸때 동일하게 설정했는데 table이 없다는 오류를 보고서 왜!!! 를 시전한것 같다. 보통 oracle 은 하나의 인스턴스에 계정별 스키마로 접근하게 되어있어 @Entity ..
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 내가 맞이한 오류는 위와 같은데 어떤 상황이었냐면 jar 를 배포했을때 Mybatis 조회쿼리를 호출하면 위와 같은 오류가 발생했다. 개발툴에서는 문제없이 구동되고 있었기 때문에 몰랐고, 배포하고 나서야 알게 되었다. 프로젝트의 Mybatis 는 mapper 방식과 dao SqlSession 방식 모두 쓰는 형태인데 그 중 dao SqlSession 방식은 구프로젝트의 뼈대 모..
엔티티가 연관관계없이 특정 컬럼들만 조인해서 뽑아와야 할때가 있다. 이때 엔티티에 값을 담아서 리턴할 수 없어서 DTO에 반환해야 하는데 Projections 를 이용하면 보기좋게 코드를 작성할 수 있다. 먼저 Projections 내의 3가지 bean, fields, constructor 를 이용하는 방법과 @QueryProjection 어노테이션을 이용하는 방법이 있다. 활용해본 결과 Projections의 생성자를 이용하는 방법과 @QueryProjection 어노테이션을 이용하는 방법이 좋은 것 같고 프로젝트 상황에 따라 이 2가지를 사용하는게 이점이 있다고 본다. bean과 fields 방식은 DTO의 필드들과 네이밍이 동일하지 않으면 삽입이 안되서 다른 네이밍들은 직접 다 잡아줘야 한다. AE..
org.hibernate.hql.internal.ast.QuerySyntaxException: SampleEntity is not mapped 앞서 다중 DB를 사용하기 위해 설정하고 JPA + QueryDSL + Mybatis 를 이용할 수 있게 구성했는데 그 중 querydsl 을 사용할 때 Primary DB 는 크게 문제 없이 잘 작동 하였는데 sub DB 가 위와 같은 오류를 내뿜었다. 해당 오류는 db에 엔티티 테이블 맵핑을 찾을 수 없어서 나는 오류이다. [SpringBoot] 다중 Datasource, JPA+QueryDsl+Mybatis 사용 설정. 지난번에 이기종 DB 를 연결하기 위해 Datasource 를 분리하는 작업을 했었는데 거기에 덧붙여 JPA와 Mybatis를 사용할 수 있..
지난번에 이기종 DB 를 연결하기 위해 Datasource 를 분리하는 작업을 했었는데거기에 덧붙여 JPA와 Mybatis를 사용할 수 있게하고 QueryDSL 까지 사용하려고 한다. [SpringBoot JPA] 다중 DB 설정하기 (multi Datasource + 이기종 DB)간혹 사이트들을 연계해야 할때, 그 중에서도 api 없는 사이트의 데이터를 사용해야할 때, 하나의 웹에서 여러 DB를 연결 시켜 사용해야 할 때가 있다. 간단하게 DB Link 로 해결하려 했으나 메인으jong-bae.tistory.com JPA 설정만으로 분리하는 것은 위 전 포스팅과 같이 매우 간편하게 설정할 수 있었다.하지만 필자 프로젝트에 Mybatis도 간혹 필요한 부분이 있어서 설정하는데약간의 예상치 못한 시행..
웹서버 앞단에 웹방화벽이 있는경우 웹방화벽에도 SSL을 등록해줘야 올바르게 443 포트로 접근이 가능하다. 웹방화벽에 등록을 안하면 아무리 웹서버에서 SSL 적용해놔봤자 접근이 안되거나 보안인증서가 올바르지 않다는 식으로 나온다. 보통 기업에는 이를 관할하는 보안팀이 있어서 요청하면 알아서 해주겠지만 필자는 모든걸 개발부터 인프라까지 모두 관할해야 해서 직접 설정해 주었다. (* 전산팀 같은게 있지만 웹쪽을 관할 안함 ㅡㅡ; ) F5 웹방화벽을 사용하고 있는데 뭐 나름 잘 선방하는 장비인 것 같다. 기본 웹방화벽이 설정되어 있고 SSL 인증서가 있다는 가정하에 진행하도록 하겠습니다. 1. 웹방화벽에 SSL 인증서 등록하기 Import 를 클릭하여 SSL 인증서를 등록해준다. 여기까지 하면 F5 웹방화벽에..