- Today
- Yesterday
- Total
목록Technology/Web - Spring (23)
메이쁘
안녕하세요? Kotlin으로 Spring framework를 사용하게 되서, 처음 프로젝트 생성부터 하나씩 만들어가면서 공부하려 했습니다. 근데 왠걸... 처음 생성할 때 부터 이슈가 발생했습니다. 구글 검색을 통해 빠르게 해결하긴 했습니다만.. 어찌보면 간단한 건데, 앞으로도 프로젝트 생성할 일은 잦을 것 같아서 따로 포스팅해두려고 했습니다. 물론 다른 분들의 게시글을 참고하셔도 되지만, 저는 빠르게 해결하기 위해 작성하려 합니다. 빠르게 해결해서 시간절약하시길 바랍니다! IDE : Intellij Framework : Spring boot 2.6.4 Language : Kotlin Build : Gradle 1. 문제 발생 정확히 spring boot 프로젝트 생성 후 gradle build를 시도하..
안녕하세요? 보통 java persistence framework로 ORM방식인 JPA를 많이들 사용하시는데요. 현재 프로젝트에서는 SQL Mapper 방식인 mybatis로 DB연동을 합니다. API 개발 도중, insert한 후, insert할 때 사용했던 PK값을 가지고 와서 이 PK와 연계된 테이블에 FK로 값을 insert하는 그런 로직을 만들어야 했습니다. 이를 위해 insert 후 해당 값을 다시 select해서 PK값을 가져오는건 비효율적이라고 생각했습니다. 다른 방법이 있지 않을까 찾다가, insert 후 결과로 특정 값을 select 해서 받아올 수 있는 방법을 찾게 되서 적용시켰는데요. 바로, selectKey 입니다. 핵심만 말씀드리면, 방식으로 xml에 쿼리를 만들어두면, sele..
안녕하세요? 거두절미하고 바로 작성해보겠습니다. JPA에서 데이터를 DB에 INSERT하기 위해 사용하는 save와 saveAll이 있습니다. 이 두 가지의 큰 차이는 save는 1개를 저장하는 것이고, saveAll은 안에 들어가있는 N개의 데이터를 저장하는 것입니다. 그럼, 같은 N건을 save와 saveAll을 사용해서 저장하게 되면 어떤 성능 차이가 있을까요? 0. 테스트 @Nested @DisplayName("save와 saveAll 성능 비교 테스트") class SaveTest { @Transactional @Test void SAVE_시간_측정_테스트() { long start = System.currentTimeMillis(); int count = 100000; String member..
안녕하세요? JPA를 사용하던 중 엔티티 간 연관관계가 있을 때, 해당 엔티티에 대해 SELECT 조회 시 발생하는 N+1 문제에 대해 알아보고 테스트해보고 해결해보는 시간을 가졌습니다. 이를 캡쳐하고 정리하면서 공부하려고 합니다. 0. JPA와 JPQL JPA와 JPQL. 무슨 관계일까요? JPQL은 Java Persistence Query Language의 약자로, DB 테이블이 아니라 엔티티의 객체를 대상으로 검색하는 객체 지향 쿼리입니다. 이름처럼 SQL과 비슷한 문법을 가지고 있습니다. JPQL을 사용하기 전까지는 EntityManger의 find를 통해 Select를 했었는데요. 이러한 find 함수만 활용하기에는 조회가 복잡해지고 어려워질수록 사용하기가 까다로워집니다. 이를 해결하기 위해 J..
안녕하세요? Spring Boot와 Java를 이용해서 쉽고 간단하게 구글 로그인하는 API를 구현해봤습니다. 여러 블로그 및 공식 문서를 참고했습니다. https://developers.google.com/identity/protocols/oauth2/web-server 웹 서버 애플리케이션에 OAuth 2.0 사용 | Google ID 플랫폼 | Google Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 웹 서버 애플리케이션에 OAuth 2.0 사용 이 문서에서는 웹 서버 애플리케이션이 Google API 클라이언트 라이브러리 또는 Google OAuth developers.google.com https://develop..
안녕하세요? 개발 도중 발생했던 트러블 슈팅에 대해 원인을 찾고자 끝까지 팠던 경험을 기록하고 왜 저 에러가 발생했는지, 어떻게 해결했는지 정리하려고 합니다. 0. 시작 - RestTemplate Class를 활용해 API 통신하려고 postForEntity() 함수 호출 시 에러 발생 ** RestTemplate? Spring 3.0 부터 지원, 스프링이 제공하는 HTTP 통신에 유용하게 사용 할 수 있는 템플릿이며, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지키고 있다. RestTemplate는 Spring에서 제공하고 있는 JdbcTemplate같은 Template로, RESTful Service 호출과 응답에 관련된 여러 메소드를 제공하고, REST 클라이언트를 쉽게 개발할 수 있..
안녕하세요. Spring framework에서 Swagger-ui 라이브러리를 사용하던 중, 어느순간부터 swagger-ui.html이 안들어가지더군요. 물론, 이전에는 잘 들어가졌습니다. 갑자기 이렇게 안되는 이유가 뭘까 하면서 넘겼다가, 휴일에 해결해보자! 하고 열심히 찾아봤습니다. Swagger-ui 버전은 2.9.2 버전 입니다. *** 3.x 버전 부터는 swagger-ui 경로가 다르다고 합니다. localhost:8080/swagger-ui/index.html 로 접근해보세요 먼저, http://localhost:8080/swagger-ui.html 은 404 에러로 안들어가진다고 했을 때 http://localhost:8080/v2/api-docs 는 들어가지는지 확인해보세요. 둘 다 안들..
안녕하세요. 제가 작성한 Entity 소스코드부터 보여드리자면, @Getter @Setter @ToString @Entity @Table(name="members")// DB에서 해당 이름의 테이블과 매칭 @ApiModel(value="LoginPVO", description="로그인 PVO") public class LoginEntity implements Serializable { private static final long serialVersionUID = 1L; @Id// Primary key @ApiModelProperty(value="아이디", required = true) private String emailId; @ApiModelProperty(value="비밀번호(해시)", requir..
안녕하세요. tomcat을 활용해서 war파일을 서버에 배포했지만, 자꾸 404 error 또는 접근 오류가 발생하여 접속조차 안될 경우가 있습니다. 한참 찾고 해맨 끝에, 방법을 알게 되었고 잊어버리지 않게 기록해두려고 합니다. 자세하게 설명하기보단, 순서대로 요점만 작성하겠습니다. 간단히 원인은 tomcat이 war파일에 접근할 때 여러 권한 상의 제약이 있어 배포하지 못하고 tomcat 서버만 호출해서 입니다. 즉, 위와 같이 RequestMapping한 url은 접근이 안되지만, Mapping URL 없이 기존 IP주소 + 포트 로 접근하면 Tomcat 서버는 호출되는 경우에 해당됩니다. 그럼 차례대로 진행해보겠습니다. 1) war 파일을 tomcat 설치 폴더의 webapps 폴더 내부로 옮기기..
안녕하세요. 제목이 좀 길었는데, 상황부터 설명드리자면 freenom에서 무료로 DNS 주소를 만든 후 AWS 고정IP와 연결시켰고, GoGetSSL에서 해당 DNS 주소에 맞는 인증서를 무료로 만들었습니다. 물론 서버에 암호화키와 인증서 파일을 넣고, Tomcat에 환경설정까지 마쳤습니다. 하지만... 처음엔 잘 되더니 얼마 지나지 않아 뻗어버리더군요... "DNS_PROBE_FINISHED_NXDOMAIN" 이 에러와 함께 말이죠. 이것이 리얼 서버 문제인지, 아니면 DNS 문제인지 밝혀내야 하는데, 이를 확인할 수 있는 방법은 우선 실제 IP주소로 접근해보면 됩니다. 그래서 IP주소로는 접근 가능한데(인증서는 오류날 수 있지만, 서버는 정상 동작합니다) DNS주소로는 위 오류가 발생한다??? 무조건..