hotifx : 빠른 버그 수정. main에서 파생되어 오류 수정 후 바로 main에 merge
Trunk-based flow
브랜치 하나만 잘 관리하자
이미 안정화 된 프로젝트들이 주로 사용하는 방식
main : 실제 배포
feature : 상세 기능 개발. main에서 파생됨
이외 github flow, gitlab flow 등등 여러 종류가 있다
팀 상황에 맞추어 적용
리차드슨의 성숙도 모델
레벨 0
클라이언트는 서비스별로 유일한 URL 끝점에 HTTP POST 요청을 하여 서비스를 호출합니다. 요청을 할 때마다 어떤 액션을 수행할지, 그 대상(예: 비즈니스 객체)은 무엇인지 지정합니다. 필요한 매개변수도 함께 전달합니다.
레벨 1
서비스는 리소스 개념을 지원합니다. 클라이언트는 수행할 액션과 매개변수가 지정된 POST 요청을 합니다.
레벨 2
서비스는 HTTP 동사를 이용해서 액션을 수행하고(예: GET은 조회, POST는 생성, PUT은 수정), 요청 쿼리 매개변수 및 본문, 필요 시 매개변수를 지정합니다. 덕분에 서비스는 GET 요청을 캐싱하는 등 웹 인프라를 활용할 수 있습니다.
레벨 3
서비스를 HATEOAS(Hypertext As The Engine Of Application State, 애플리케이션 상태 엔진으로서의 하이퍼미디어) 원칙에 기반하여 설계합니다. HATEOAS는 GET 요청으로 반환된 리소스 표현형에 그 리소스에 대한 액션의 링크도 함께 태워 보내자는 생각입니다. 가령 클라이언트는 GET 요청으로 주문 데이터를 조회하고 이때 반환된 표현형 내부 링크를 이용해서 해당 주문을 취소할 수도 있습니다. HATEOAS를 사용하면 하드 코딩한 URL을 클라이언트 코드에 욱여넣지 않아도 됩니다.
기본형 데이터 타입과 참조형 데이터 타입 간의 형 변환을 할 수 있도록 해주는 매개체가 Wrapper Class 이다. 객체 지향에서는 모든 것이 객체로 다뤄져야하는데, 자바의 기본형 데이터들은 편의성을 위해 이러한 객체 지향의 개념 밖에 존재한다.
그러나 때로는 이것들을 객체로 다뤄야할 경우가 있는데, 이를 위해 존재하는 것이 래퍼 클래스이다.
JPA에서는 트랜잭션이 끝나는 시점에
최초 조회 상태 기준으로 변화가 있는 모든 엔티티 객체를 DB에 자동 반영해준다!
- update를 굳이 쓰지 않아도 된다
- 최초 조회 당시에 스냅샷을 만들어두고,
트랜잭션이 끝나는 시점에 비교하여 Update Query를 DB에 전달한다
- 영속성 컨텍스트가 관리하는 Entity에만 적용된다
- https://velog.io/@neptunes032/JPA-영속성-컨텍스트란
- 준영속/비영속 상태의 Entity는 Dirty Checking 대상에 포함되지 않는다!
- 값을 변경해도 DB에 반영되지 않는다