피치 못할 사정으로... 쓰고 있던 젠킨스에 접근을 못하게 되어 수동으로 배포할 일이 생겼다. 이참에 리눅스에 jar 파일로 배포하는 법도 익힐겸 수동 배포를 해보았다. 깃허브 연동하여 배포하는 방법은 차차 해봐야겠다.! 젠킨스 만세...!! * 리눅스 서버 배포 ? 로컬에서 프로젝트를 배포하여 새로 시작할 때는 IDE로 손쉽게 Run 버튼을 누르면 되지만, 리눅스 서버에서 배포하기 위해서는 jar 파일을 실행해 줘야 한다. jar 파일 빌드하기 1. 우측 Gradle 탭 - 배포하고자할 모듈 - build - bootJar 실행 2. 좌측 프로젝트 - 배포할 모듈 - build - libs 폴더에서 생성된 jar파일 여기서 생성된 jar파일을 Linux 서버에 옮겨 실행하면 배포 된다. 서버에 JDK ..
프로세스가 정상적으로 동작하고 있는지를 확인 ps -ef | grep java : 현재 실행되고 있는 java 관련 프로세스가 있는지 확인한다. $ ps -ef | grep java root 14188 14162 0 Feb06 ? 00:39:45 java -jar -Dspring.profiles.active=dev /api.jar root 43501 42301 9 18:46 pts/0 00:00:26 java -jar api.jar root 44611 42301 0 18:51 pts/0 00:00:00 grep java 프로세스 중지 kill -9 {pid(프로세스번호)} $ kill -9 43501
진행하고 있는 사이드 프로젝트에서 서버 구축을 위해 네이버 클라우드 플랫폼으로 무료 크레딧을 제공해줘서 서버 올리고 사용하고 있었다. 함께한 팀원이 이미 프로젝트에 대한 서버는 구축해주셔서 잘 사용하고 있었는데 어느날 갑작스러운 서버 장애를 겪게 되었다. 결론적으로 클라우드 서버에서 문제가 발생한 건 아니었지만 직접 구축한게 아니라 장애 처리하면서 서버에 대해 모르는 개념이 너무 많아 고충을 겪었다. 그래서 스스로 정리하며 프리티어로 웹 서버를 간단하게 구축하는 방법을 진행해보기로 한다. 네이버 클라우드 접속 후 회원가입 및 결제 정보 입력 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Globa..
1 : N 관계에서 Fecth Join 사용시 발생하는 MultipleBagFetchException 해결법 1. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 2. 1:N 관계의 Collection Entity는 Lazy Loading(지연 로딩)으로 조회한다. 3. Lazy Loading(지연 로딩) 성능 최적화를 위해 hibernate.default_batch_fetch_size를 적용한다. * QueryDsl 에서도 1:N 관계에서 단 한번의 fetch join 사용해야 하는 건 똑같다. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 연관관계에서 자식 테이블인 ToOne 관계에서는 row 수를 증가시키지 않는다. 따..
회원 정보 조회하는 경우, 탈퇴처리된 상태의 회원은 조회가 안되도록 예외처리를 해야하는 상황이 있었다. 당시 controller-service의 역할에 대한 개념이 불명확해서 어디서 예외처리를 해줘야하는지 고민을 한참 했었다.(ㅎㅎ..하하) 그러다가 나와 비슷한 고민을 하는 분의 질문에서 프로그래밍 로직을 이렇게 한다는 답변을 보게 되었다. " view -> validation logic -> business logic -> dao " 보통의 view는 controller에서 처리하고, 여기서 예외처리는 validation logic에 해당하므로 service에 넣어주는게 맞다고 생각했다. 그리고 아주 단적으로 controller가 없더라도 API 로직은 정상적으로 돌아가야한다는 김영한님의 답을 어디선가..
N+1 문제 : 조회된 부모의 수만큼 자식 테이블의 쿼리가 추가 발생하는 현상 연관 관계가 설정된 엔티티를 조회할 경우에 발생하는 문제 쿼리를 날렸을 때 의도하지 않은 쿼리가 N번 추가로 실행되는 것을 N+1이라고 한다. 해결방법 : FetchJoin * Join, Fetch Join 차이점 Join - 연관 Entity에 Join을 걸어도, 실제 쿼리에서 SELECT 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 - 조회의 주체가 되는 Entity만 SELECT 해서 영속화하기 때문에 데이터는 필요하지 않지만, 연관 Entity가 검색조건에는 필요한 경우에 주로 사용됨 Fetch Join - 데이터를 가져올 때 조회의 주체가 되는 Entity 이외에, Fetc..
스프링부트는 스프링 프레임워크를 이용해서 더 쉽고, 빠르게 개발할 수 있는 도구입니다. 본격 시작하기 앞서 스프링부트를 개발 환경을 세팅해야합니다. 💡해야 할 일 1. InteliJ를 이용해서 스프링부트 설정하기 2. MariaDB 설치 먼저 InteliJ를 설치하고 프로젝트 세팅해보도록 하겠습니다! 1. InteliJ를 이용해서 스프링부트 설정하기 1. InteliJ 다운로드 하기 https://www.jetbrains.com/ko-kr/ JetBrains: 소프트웨어 개발자 및 팀을 위한 필수 도구 www.jetbrains.com InteliJ는 Ultimate버전, Community버전으로 나뉘어져 있습니다. 둘의 차이점은 단연 무료버전 유료버전이지만 더 자세히 살펴보자면 이러합니다. Ultimat..
- Total
- Today
- Yesterday
- checkout
- Java
- 장애 대응
- Spring Security
- Cannot construct instance of
- QueryDSL
- document insert
- junit5
- JPA
- MongoDB
- addFilterBefore
- ?.let
- 스프링오류
- n+1
- 문자열계산기
- port
- MultipleBagFetchException
- java.lang.NullPointerException: Parameter specified as non-null is null
- spring boot 3
- Linux
- 배열
- insertMany
- 추상클래스
- FetchJoin
- Git
- insertOne
- Kotlin
- dto 클래스 생성자
- array
- ChatGPT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |