촬리의늘솔길

왓에버xGDG Campus Korea 3주차 회고록 본문

✍️2023/GDG Campus Korea

왓에버xGDG Campus Korea 3주차 회고록

리촬리 2023. 9. 15. 23:26

뭐했다고벌써 3주차인지..!시간 정말 빠르네요

이번주는 좋은 것과 나쁜 것이 무엇이 있었나요?

좋은점 

새로운 지식들을 알게되었다 

ex )

- 컨트롤러를 의존성을 낮추기 위해 인터페이스 화 한다는것

- Entity 클래스에 객체를 담을 수 있다는 것

- Entity 클래스에 Setter 사용은 지양해야 한다는 점

https://okky.kr/questions/1214302

 

OKKY - 스프링부트에서 User entity를 다룰 때에 @Setter를 쓰지 않는 것이 좋을까요?

@Setter를 쓰지 않는게 좋은 이유에 대해서 많이 구글링해보고 그 결과들이 납득이 되는데깃허브에서 다른 프로젝트들을 열어봤을 때에 유독 회원가입에 관련된 User 엔티티에 대해서는  Setter를

okky.kr

 

 

 

나쁜 점 -
음....딱히 없음 

나의 무지함? 정도..

이번주 진행했던 학습/개발 내용은 무엇이었나요?

- CI/CD 완료

과정 작성해둠

https://pinetree0308.tistory.com/189

 

CI/CD - 프로젝트에 적용하기 - github Actions&NCP&GHCR 사용

프론트 CI/CD Dockerfile - front FROM node:18.16-alpine WORKDIR /app/frontend COPY package*.json ./ RUN yarn install COPY . . EXPOSE 3000 CMD ["npm", "start"]CICD -front name: Build and Deploy Docker Image on: push: branches: - main - develop jobs: build

pinetree0308.tistory.com

- Mapper 추가

https://its-ward.tistory.com/entry/Spring-DTO%EC%99%80-Mapper

 

[Spring] DTO와 Mapper, Mapper(Map Struct) 사용 방법 - gradle

이 글에선 DTO에 대한 간략한 설명과 ,Mapper에 대해서 설명합니다. DTO(Data Transfer Object)란? DTO는 Data Transfer Object의 약자로 마틴 파울러(Martin Fowler)가 ‘Patterns of Enterprise Application Architecture’ 라는 책

its-ward.tistory.com

https://junyharang.tistory.com/365

 

[Spring Boot] MapStruct

Source Code : https://github.com/junyharang-coding-study/JunyHarang-JAVA-EncryptionDecryption.git 백견불여일타 스프링 부트 쇼핑몰 프로젝트 with JPA:이젠 프로젝트다! COUPANG www.coupang.com React.js 스프링 부트 AWS로 배우는

junyharang.tistory.com

 

- 일정 수정/삭제 완성

- 공결 신청/조회/승인/거부 완료

 

가장 고민을 했던 부분은 무엇이었나요?

 Jira 를 이번 프로젝트때 쓰고있는데 유용하고 재밌고 신기하다. 생각보다 기능이 잘 갖춰져있다. 다만, 스토리 단위로 티켓을 나눌때의 기준이 굉장히 모호하다.

백엔드는 그래서 일단 api 단위로 티켓을 나누고, 스토리 티켓에 이슈를 연결하기로 했다.

논의하다보니, api 단위로 만들기보다 역할분담 하는것과 맞게 하기로 했다.

예컨대 나는 이번주에 일정 수정과 삭제를 맡았는데, 총 두개의 api 이므로 

유저는 일정수정과 삭제를 할 수 있다 로 스토리 단위 티켓을 만든다.

그런담에 하위 이슈로 일정수정, 삭제 를 만든 뒤

커밋단위에 하위이슈 번호를 써넣는다.

이렇게 하면 역할단위로 티켓생성이 가능하다.

 

JPA 에서의 수정 처리 역시 고민되었다.

Setter 사용은 지양하면서

jpa 의 더티체킹을 이용하면 된다고 한다.

영속성 매니저가 변경된값을 확인해서 알아서 jpa 를 이용해 db에 저장해준다는 것이다.

그렇게 되면 엔티티에서 일부 값을 변경만 해도 수정이 된다는건데,

되게 신기했다.

 

https://sudo-minz.tistory.com/154

 

Setter없이 Entity update

값의 변화점을 예측하기 힘들어지게하는 Setter는 지양해야 한다. 이후 Setter에 의한 문제가 발생할 여지를 남겨두는 것은 좋지 않기 때문이다. 물론 '무조건' 쓰지 말아야 하는 것은 아니다. 단순

sudo-minz.tistory.com

https://www.baeldung.com/spring-data-jpa-dynamicupdate

https://jojoldu.tistory.com/415

 

더티 체킹 (Dirty Checking)이란?

Spring Data Jpa와 같은 ORM 구현체를 사용하다보면 더티 체킹이란 단어를 종종 듣게 됩니다. 더티 체킹이란 단어를 처음 듣는분들을 몇번 만나게 되어 이번 시간엔 더티 체킹이 무엇인지 알아보겠습

jojoldu.tistory.com

https://joanne.tistory.com/218

 

서비스에 @Transactional을 선언한 경우와 선언하지 않은 경우의 JPA save 동작

서비스에 트랜잭션이 달린 경우 // postService.java @Transactional public void save() { repository.save(something); } 2021-08-22 15:54:08.656 DEBUG 9192 --- [ http-nio-8080-exec-1 ] o.s.o.j.JpaTransactionManager : Creating new transaction with n

joanne.tistory.com

 

 

아쉬운 부분을 개선하기 위해서 필요한 것은 무엇인가요?

- 진행속도와 소통이 필요하다.

분명 데일리 스크럼을 진행하는데도 불구하고 프론트/pm/백엔드 그냥 다 지금 뭐하고있는지 모른다.

그리고 기획 관련 회의를 너무 자주 오래 했기도 하고 기록을 명확히 했음에도 불구하고 논의한게 많았어서 구현하면서도 헷갈리고 다시논의하게 되는것같다.

- 어떻게 해야 더 명확히 소통할 수 있을까?

- jira 를 사용해도 잘 모른다.

다음주는 어떻게 보낼 예정인가요?

- 회계관련 기능을 구현할 것 같다.

- 남은 기능도 구현하고

- 할 수 있으면 SSE 도 해볼것.

728x90