결제 로직 설계1
결제 로직 설계1 결제 로직을 어떻게 구현할 수 있을지를 고찰해보고자 합니다. 결제 단계 인터넷에서 상품을 주문하는 과정을 단순화해서 생각해봅시다. 상품을 고르고, 수량을 입력한 후 [주문하기] 버튼을 누릅니다. 결제 팝업이 뜬 후, 결제를 진행합니다. 결제가 완료되면, 완료 창으로 redirect 됩니다. 구매자 입장에서는, ...
결제 로직 설계1 결제 로직을 어떻게 구현할 수 있을지를 고찰해보고자 합니다. 결제 단계 인터넷에서 상품을 주문하는 과정을 단순화해서 생각해봅시다. 상품을 고르고, 수량을 입력한 후 [주문하기] 버튼을 누릅니다. 결제 팝업이 뜬 후, 결제를 진행합니다. 결제가 완료되면, 완료 창으로 redirect 됩니다. 구매자 입장에서는, ...
데이터베이스 설계 및 구축(8-10장) 정규화 정규화란 ERD 내에서 중복을 찾아 제거해 나가는 과정을 말한다. 동일한 정보는 한 곳에서만 관리해야하기 때문이다. 제 1정규화 제 1정규화란 엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때, 하나의 속성이 단일 값을 갖도록 하는 것을 말한다. 제 2정규화 제 2정규화는 주식별자가 아...
데이터베이스 설계 및 구축(5-7장) 업무 분석 ‘논덩이 효과’ 라는 용어가 있다. 초기 단계에서의 실수일수록 파급효과가 크다는 말이다. 대상이 되는 업무를 알지 못하면 프로그램을 개발하는 것은 어려운 일이다. 시스템 개발을 의뢰한 회사에 대한 일반 사항을 이해해야 한다. 전체 업무를 분석하기에 적당한 크기로 나눈다. 각 서...
데이터베이스 설계 및 구축(1-3장) 데이터베이스의 역사 초기에는 파일 개념으로 자료를 저장했다. 그러나 이 시스템에는 다음과 같은 문제가 있다. 데이터 종속성 데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받는다는 것이다. 파일의 정보가 바뀌면, 이용하는 모든 프로그램도 바뀌어야 한다. 데이터 중복성 같은 내용의 데...
JPA에서 엔티티의 영속화(Persistence) 단계 엔티티의 생명주기 JPA에서 엔티티는 총 4가지 상태를 가집니다. New/Transient(비영속): 영속화되지 않은 상태로, 데이터베이스에 저장되지 않은 객체입니다. Persistent/Managed(영속): 영속 컨텍스트에 관리되는 상태로, 데이터베이스에 저장되었거나 저장될 예정...
자동으로 rebase 하는 pipeline 구축하기 모든 opened Merge Request 에 대해서 다른 merge request 로 인해서 target branch 의 변경사항이 생기는 경우, rebase 해주는 작업을 자동화했습니다. 시작점 새로운 기능의 개발을 위해서는 feature-v2 브랜치를 사용하고, 기존 이슈 대응은 maste...
JPA 의 영속성 컨텍스트와 엔티티 동등성 의문의 시작은 JPA 에서 JPQL 을 활용하여 엔티티를 조회한 결과보다 영속성 컨텍스트에 존재하는 값을 우선해서 반환한다는 점이었습니다. @Test public void JPQL_영속성_컨텍스트_JPQL업데이트() { em.clear(); Item found...
RDB 와 대리키 JPA 를 쓰다보면 습관처럼 다음과 같은 코드를 작성하고는 합니다. @Id @GeneratedValue private Long id; 어떤 엔티티에 대한 식별자(PK) 로 대리키를 생성해서 사용하는 전략입니다. 그러면 왜 엔티티가 기본으로 가지고 있는 키를 사용하는 것이 아니라 대리키의 사용을 권장할까요? RDB 내의 키...
JPA 와 proxy JPA 에서 연관관계에 있는 객체를 가져올 때, Lazy 로 설정을 하면 해당 엔티티를 프록시 객체로 가져옵니다. @Entity public class Member { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name= "TEAM_ID") private Team team;...
JPA 와 엔티티 데이터 명시되지 않은 @Access JPA 가 엔티티 데이터에 접근하는 방식을 지정하기 위해서는 @Access 를 사용할 수 있습니다. Access 어노테이션에는 두 가지 옵션이 있는데, 필드 접근을 위한 FIELD 와 프로퍼티 접근을 위한 PROPERTY 가 있습니다. @Access 를 명시적으로 사용하지 않는 경우엔, ID ...