분류 전체보기 (18) 썸네일형 리스트형 [MyBatis/JPA] (코드) MyBatis -> JPA 전환 과정 💡목표앞선 포스팅에서,어댑터 패턴을 이용하여 OrderRepository와 OrderJPARepository의 메서드가 호환될 수 있도록 한다고 하였다. 즉, OrderJPARepository'Adapter' 클래스를 이용하여, 호환되지 않는 OrderJPARepository를 OrderRepository 인터페이스로 변환시켜 OrderJPARepository와 OrderRepository 인터페이스가 호환되도록 한다. 📗 과정1. 기존 OrderMyBatisRepository만 있던 코드에서, 아래 클래스를 생성한다.OrderJpaRepository 인터페이스 (JPA 레포지토리)OrderRepository 인터페이스 (상위 레포지토리)OrderJPARepositoryAdapter 클래스 (어댑터.. [1차 프로젝트 회고] 여러 컨벤션 이용 후기 - Java 코드, MyBatis 코드, DB, Git Commit 컨벤션 1차 프로젝트 때 협업을 위한 여러 컨벤션들을 적용해 보았다.각각 어땠는지 회고해보고, 다음 프로젝트에서 개선할 점을 살펴보려고 한다. 1. Java 코드 컨벤션 - NAVER 코딩 컨벤션 이용- Java 코드 컨벤션 사용 이유개발을 할 때 Java 코드 컨벤션을 이용하는 것이 좋다고 들었다.그 이유는 일관된 코드 규칙이 있어야 전체적인 코드가 깔끔해지고, 코드에 대한 이해도도 향상되어 협업이 수월해지기 때문이다. 그 밖에 많은 장점이 있지만, 사실 그냥 생각해봐도 여러 사람이 같이 일할 때는 일관된 규칙이 있어야 작업하기 편할 것 같다는 생각이다. 우리 팀은 대표적인 Java 코드 컨벤션인 Naver 코딩 컨벤션을 사용하기로 하였다. ⬇️ NAVER 코딩 컨벤션 - 공식 GitHub을 이용하였다.ht.. [1차 프로젝트 회고] Jira 사용 후기 Jira를 선택한 이유프로젝트 초반 시점, 프로젝트를 관리할 툴을 결정해야 했다.구글에 서치해보니 굉장히 다양한 툴이 있었지만, 유료가 아니면 기능이 제한적인 것들이 많았다.따라서 무료이면서 소규모 프로젝트 관리가 가능한 툴을 선정했다. 실제로 회사에서도 많이 사용되는 툴이었다. 우리 팀이 최종적으로 고민했던 툴은 두 가지 였다.1. 노션2. Jira 노션과 같은 경우, 개인적으로 일정관리나 문서를 정리할 때 자주 사용해본 적이 있었다.노션의 사용자 인터페이스는 굉장히 직관적이면서 깔끔하기 때문에, 접근성이 좋다고 느꼈다. 그래서 프로젝트 관리에 적합한 툴이라고 생각했지만, 이미 많이 써봤던 툴이기도 했기 때문에..좀 더 새로운 툴을 경험해보는 것이 좋을거라 생각하여 노션은 제외하게 되었다. 최종적으로 .. [AWS] AWS RDS(MySQL) 'Connection timed out' 오류 해결 방법 문제 상황RDS DB를 생성한 후, DB로의 외부 IP 접속을 허용하고 싶었다. 그러나 Spring Boot에서 connection timeout, MySQL Workbench에서는 Unable to connect to localhost 라는 연결 오류가 발생했다. 나는 인바운드 규칙을 추가하여 해결했지만, 해당 오류는 다양한 원인이 존재하기에 해결 방법을 글로 남겨본다. 해결 방법해결 방법은 크게 세 가지로 나뉜다. 1. '퍼블릭 액세스 가능'으로 설정 (RDS 데이터베이스 설정)2. 인바인드 규칙 추가 (보안 그룹 설정)3. Private 서브넷을 Public으로 변경 (라우팅 테이블 수정) 1. '퍼블릭 액세스 가능'으로 설정 (RDS 데이터베이스 설정)DB 연결 오류의 첫 번째 원인은 퍼블릭.. [AWS] AWS RDS(MySQL)와 Spring Boot 연동하기 - 2. Spring Boot 연동 ⬇️ 데이터베이스 생성 방법은 이전글 참고 1. AWS RDS를 통해 데이터베이스를 생성(이전글)2. Spring Boot에 연동 이제 데이터베이스를 생성했으니 Spring Boot에 연동하면 된다. 1. Data Source 생성Spring Boot에서 [Database] - ['+' 버튼] - [Data Source] - [MySQL]을 클릭한다. 그러면 아래와 같은 창이 뜬다.Name: 데이터베이스 생성할 때 입력했던 'DB 인스턴스 식별자'를 써준다.Host: 엔드포인트 입력User: 마스터 사용자 이름 Password: 마스터 암호위 요소들을 써주고 맨 아래 'Test Connection'을 눌러 연결을 테스트한다. 테스트가 통과된 후 [OK]버튼을 눌러주면 아래와 같이 DataSource가.. [AWS] AWS RDS(MySQL)와 Spring Boot 연동하기 - 1. 데이터베이스 생성 MySQL을 Spring Boot와 연동하는 방법을 알아보자. 단계는 크게 두 가지로 나뉜다. 1. AWS RDS를 통해 데이터베이스를 생성2. Spring Boot에 연동 (다음 글) 먼저 데이터베이스를 생성하는 방법부터 알아보자. 1. 지역 확인데이터베이스를 생성하기 전에, 먼저 아래 이미지처럼 '서울'이 써져있는 곳에 다른 지역이 쓰여있지는 않은지 확인한다.지역대별로 시간대가 달라 서버 시간이 따로 관리되기 때문에, 한국에서 하는 것이라면 서울로 옮겨주어야 한다. 2. 데이터베이스 생성 방식 선택표준 생성: 내가 모든 구성 옵션을 설정하는 것손쉬운 생성: 권장 옵션으로 자동 설정되는 것나는 무과금 조건에 맞춰서 구성 옵션을 설정할 것이기 때문에, 표준 생성을 선택했다. 3. 엔진 옵션 엔진은 .. [GitKraken] Pull 사용시 유의점 - 다른 사람의 커밋이 같이 푸시되는 문제 문제 상황1. 팀원분이 PR을 올리셨고, 해당 브랜치는 dev에 merge 되었다.2. 그래서 나는 local dev을 최신 origin dev로 바꾸기 위해 pull을 (잘못)사용했고..3. 결과적으로 develop에 내 브랜치를 Rebase 시켰을 때,내 브랜치 안에서 커밋과 팀원분의 커밋이 섞여서 올라가게 되었다. 당황스러운 마음에 당시 화면은 캡처하지 못했지만, 대략 이런 식으로 내 브랜치에 팀원분의 커밋까지 같이 올라간 상황이었다. 그리고 내가 올렸던 PR에도 다른 팀원분의 커밋이 겹쳐서 올라가게 되었다. 문제 발생 이유 pull을 받아올 브랜치를 잘못 설정한 것이 화근이었다. 결론부터 말하면,원래는 local dev를 최신 dev로 바꾸기 위해, local dev로 checkout 한 뒤 .. [GitKraken] 브랜치를 원격 develop에 Rebase 하는 방법 상황dev에서 feature 브랜치를 생성하여 작업 중이었는데, 팀원이 다른 브랜치를 dev에 merge 시킨 상황이다. 오래된 코드에서 계속 작업하는 것보다는 최근에 올라온 코드로 업데이트시키는 게 좋으므로,로컬 dev를 원격 dev로 업데이트 시킨 뒤 내 작업 브랜치를 dev에 Rebase 해주는 것이 좋다. 이제부터 그 과정을 알아보자! 과정1. 로컬 dev를 원격 dev로 업데이트하기origin(원격) dev로 이동하면, 이미 dev가 존재한다는 알림이 뜬다.[Reset Local to Here]을 클릭하면 된다. 그러면 아래와 같이 로컬 dev가 원격 dev로 업데이트 된다.이렇게 하면 굳이 pull을 쓰지 않아도 dev를 업데이트 할 수 있다. 2. dev에 내 브랜치를 Rebase하기로컬 .. [GitKraken] Rebase로 커밋 히스토리 깔끔하게 정리하기(3개 브랜치 연속으로 merge 시키기) 상황브랜치 3개를 develop에 모두 merge해야 하는 상황이었고, Rebase를 이용하여 커밋 히스토리를 깔끔하게 만들고자 했다. 아래는 merge하기 전, GitKraken의 커밋 히스토리 상태이다. 브랜치 자체를 dev에 Rebase하는 건 간단하지만, 위 브랜치 B, C는 dev에서 생성한 것이 아니고 B는 A에서, C는 B에서 순차적으로 생성한 것이라 상황이 조금 복잡하다. 이렇게 여러 브랜치를 순차 생성한 상황일 때는 어떤 순서와 과정으로 dev에 merge해야 하는지 기록하기 위해 글을 작성하게 되었다. ⬇️ 브랜치를 Rebase하는 방법은 아래 포스팅에 써놓았다.https://suoop.tistory.com/98 [GitKraken] 브랜치를 원격 develop에 Rebase 하는 방.. [Spring Boot] 로직 흐름 변화에 따른 API 분리 (판매자 주문 승인/취소) ☝️ 사용 버전Spring Boot3.2.5JDK17 💡문제 상황 초기에는 판매자가 주문을 승인하고, 취소하는 기능을 하나의 API로 만들었다.두 기능 모두 단순히 주문 상태를 승인 및 취소로 수정하는 것이었기 때문에, 논리적 흐름이 동일했다. 따라서 하나의 API로 관리해도 문제가 없었다. @Operation(summary = "(판매자) 주문 승인 또는 취소", description = "(판매자) 주문을 승인 또는 취소한다.") @PatchMapping("/{orderId}") public ResponseEntity cancelOrApproveOrder(@PathVariable Long orderId, .. 이전 1 2 다음