보통 JPA에서 새로운 객체를 저장한다고 할때, dto를 entity로 변환할 것이다. 그런데 , dto를 entity로 변환하는 코드는 어디에 두는게좋을까? 보통 Controller, Service, Repository 3계층으로 나누어 사용하고 Entity생성은 Builder로 생성한다고 가정해보자. 1. DTO에서 생성 @ApiModel(value = "쿠폰 등록") @Data public static class CupnRegistration { @ApiModelProperty private String cupnIssuSe; @ApiModelProperty private Long cupnSplrSn; .... public Cupn toCupn(){ return Cupn.builder() .cupnI..
지식 저장소
들어가기에 앞서 예제는 Member와 MemberWhdwlHis(회원 탈퇴 내역)이 1:1로 Mapping되어 있으며, 회원 탈퇴 내역의 PK값은 Member의 key로 매핑되어 있다. @Table(name = "ST_MBR_WHDWL_HIS") public class MemberWhdwlHis{ @Id @Column(name = "MBR_NO", nullable = false) private String memberNo; @OneToOne(fetch = FetchType.LAZY) @MapsId // 외래키를 기본키로 사용할때 id를 매핑 @JoinColumn(name = "MBR_NO", referencedColumnName = "MBR_NO") private Member member; @Column..
💡 이번 프로젝트에서 어쩌다보니 Vue를 배워볼 일이 생겼는데 프론트를 제대로 접하기전에 CSR,SSR 개념을 확실히 알고가야 할 것같아 이번 기회에 제대로 알고가자!는 생각에서 포스팅을 작성하던 도중, MPA, SPA부터 이해하고 가야할것같아서 정리하게 되었다. *MPA와 SPA 일반적으로 웹사이트에 접속하려면, 서버에게 HTML 파일에 대한 요청을 보낸다. 후에, 클라이언트는 어떠한 요청을 주게 되는데 위 사진에서 두가지의 차이점이 나타난다. MPA방식은 HTML을 리턴하고있고, SPA는 JSON을 리턴하는 모습을 확인할 수 있다. 아래 사진을 보며 MPA을 먼저 살펴보자 * MPA(Multi Page Application) 위 사진에서 MPA방식은 요청이 들어올때마다 데이터와 페이지구조가 리로드되고..
예를 들어, 위와 같이 메뉴 카테고리 등록시 노출 순서(MENU_CTGRY_EXPSR_SER_VL)를 동일한 값(99,999L)으로 저장했다고 가정하자. 차후 목록 페이징시 쿼리문에 LIMIT 처리를 한다고 하면 #1 수정 전 1-1. LIMIT 0 ,10 & LIMIT 10,10을 찍어봤을 때 각 Primary Key가 겹치는 것을 볼 수 있다 -> 페이징시 겹치는 데이터가 있음을 확인할 수 있다. 따라서 ORDER BY시 하나의 조건을 더 추가하여 조회한다. #2 수정 후 등록일같이 고유한 컬럼을 조건으로 하나 더 걸어 정렬해준다면 데이터가 겹치지 않게 조회된다.
Replication이란? Replication은 말그대로 복제를 뜻하며 2대 이상의 DBMS를 나눠서 데이터를 저장하는 방식이다. 여기서 2대 이상의 DBMS는 Master / Slave 구성을 해야한다. 👉 요즘은 Slave라고 부르지 않기 때문에 Source서버 / Replica서버로 나눠서 부른다. 위 사진처럼 한 DB서버에서 모든 CRUD처리를 하게 된다면 나중에 사용자가 많아질 때 DB서버 하나가 많은 Query를 처리하기 힘든 상황이 오므로 Replication을 쓰게된다. 따라서 위 사진과 같이 Query의 대부분을 차지하는 Select를 다른 DB서버에 넘겨주는 방식으로 Replication방식이 나오게 되었다. Replication 서버를 구축하는 목적 1. 스케일 아웃 위에서 설명한 ..
스프링부트 프로젝트를 하면서 조회 페이지에서 리뷰를 등록할 때, 아래의 Save changes 버튼을 눌러 Review의 DB에 값을 넣으려는 순간 서버에서 Cannot add or update a child row: a foreign key constraint fails (`bootex`.`review`, CONSTRAINT `FK9gnx 8llky658xey9qg00djyg5` FOREIGN KEY (`member_mid`) REFERENCES `m_member` (`mid`)) 위와 같은 오류가 떴다. 일단 외래키와 관련된 오류 ( a foreign key constraint fails ) 인 것을 인지하고 자식테이블의 FK가 부모테이블의 PK 와 잘 연관이 되어있는지 확인했다. 문제가 없어서, 카..
먼저 , 학생이라는 객체를 생성하는 코드가 있고 , 아래와 같은 생성자 정의해두었다고 가정한다. public Student(long id,String name,String major,int age,String address){ this.id=id; this.name=name; this.major=major; this.age = age; this.address = address; } 여기서 클라이언트 입장에서 인스턴스를 생성한다고 생각한다. Student student = new Student(123,'jsh','py',25,'pankyo'); 위와 같이 생성할 수 있을것이다. 그렇다면 아래와 같은 경우는? Student student = new Student(123,'lsh',null,0,null); 이..
REST 방식이란? HTTP에 존재하는 모든 자원에 고유한 URI를 부여하여 활용,자원을 정의하고 자원에 대한 주소를 지정하는 방법론 REST 아키텍처의 장점 1. 자원이 존재하는 Server, 자원을 요청하는 Client로 명확하게 구분된다. 2. HTTP 표준 방식을 활용한다면 어떤 플랫폼에서도 똑같이 사용 가능하다. 3. URI 주소 자체가 동사 + 명사로 이루어져 어떤 기능을 수행하는지 유추할 수 있다. REST 아키텍처는 HTTP URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원에 대한 CRUD Operational을 적용 HTTP 메서드 Method 역할 POST 리소스 생성 GET 리소스 조회 PUT 리소스 수정 DELETE 리소스 삭제 JSON이란? Javascript에서 객..