- Today
- Yesterday
- Total
목록Technology (63)
메이쁘
안녕하세요? ec2 인스턴스에서 docker를 실행하는 작업을 하고 있었습니다. 평소에는 잘 실행되더니 인스턴스 재부팅 후에 갑자기 안되었습니다. 그래서 원인을 찾고, 이러한 이슈를 해결해가는 여정을 밟았습니다. 그 여정을 다른 사람들이 빠르게 뛰어가기 위해 이 글을 작성하게 되었습니다. 트러블슈팅에 대해 핵심만 담고, 짧게 작성하겠습니다. 1. 원인 확인 sudo docker ps -a 위 명령어로 현재 실행중인 도커 컨테이너(exit된 도커 컨테이너 포함) 를 확인해봤습니다. 그러니까 이와 같이 CREATED 된 지 2초만에 Exited가 되었더군요! 원래 안그랬는데.. 일이 하나 더 늘어난 느낌이었습니다.. (시간도 없고..) 그래서 비슷한 현상을 겪은 사람들에게 도움을 얻기 위해 열심히 구글링했습..
안녕하세요? 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 클라이언트를 쉽게 개발할 수 있..
안녕하세요. 최근에 이클립스 대신 인텔리제이를 사용하게 되면서 기존에 사용하는 톰캣 서버 설치 및 플젝 연동방식과 달라 새롭게 여러 블로그 포스팅을 참고하며 진행했었습니다. 정리하고자 작성하게 되었습니다. 간단명료하게 진행해보겠습니다. -> Windows 10 -> IntelliJ IDEA 2021.3 1. Tomcat 다운로드 https://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakar..
안녕하세요. 다른 PC에서 작업하고 git에 올려둔 프로젝트를 다른 PC에서 땡겨와 실행하려하니 해당 오류가 발생했습니다. -> Exception in thread "main" java.lang.UnsupportedClassVersionError: interfaceSample/Sample has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0 결론부터 말씀드리자면, 현재 PC에서 사용하고있는 JDK 버전이 이전 PC에서 만들고 사용했던 JDK버전보다 낮기 때문..
안녕하세요. 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 는 들어가지는지 확인해보세요. 둘 다 안들..