이 글은 김영한님의 스프링 핵심 원리 이해 강의중 중요한 의존관계 주입을 중심으로 그 원리는 무엇이고 스프링을 적용한 의존관계를 정리하기 위한 글이며, 기존의 자바코드로 이루어진 의존성 주입과 스프링을 이용한 의존성 주입까지 어떻게,왜 사용되었는지 정리해보고자한 글이다. 포스팅에 사용된 자료는 포스팅 가장 아래 링크강의에서 확인할 수 있다. 해당 포스팅에선 도출된 과정을 살펴보기 위해 기본적으로 강의자료에 사용된 클래스 다이어그램을 사용하였다. 먼저, 스프링을 적용하지 않고 Java코드로만 이루어진 예제를 정리해보자. 1. 회원 클래스 다이어그램 기본적으로 회원 서비스 인터페이스가 있고, 해당 인터페이스를 상속받는 구현체가있다. 또한 회원 DB와 연관된 repository인터페이스가 있고, 해당 인터페이..
분류 전체보기
보통 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..
회사 첫 프로젝트에서 Mybatis를 사용하다가 두번째 프로젝트에서 JPA를 사용하게 되어서 약 한달간 김영한님 강의에서 부족한 내용을 보충하고 요약하여 정리해보았다. 강의 주소는 아래와 같으며 사진의 출처또한 강의에서 제공한다. https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 기본적인 JPA 코드 // 엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // 엔티티 매니저 생성 EntityManager em = emf.createEntityManager(); // 트랜잭션 생성 EntityTransaction tx = em.getTransac..
💡 이번 프로젝트에서 어쩌다보니 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. 스케일 아웃 위에서 설명한 ..
# 들어가며 4주차는 주특기 숙련주차로, Springboot,JPA를 사용하여 기존 페이지에 Spring security와 JWT를 이용하여 로그인,회원가입을 붙여서 보안과 관련된 내용을 알수있던 주차였다. # 개인 과제 개인 과제 요구사항은 저번주에 만든 메모장 타임라인 서비스에 로그인,회원가입을 Security,JWT를 사용하여 붙여보는 것이였다. 먼저 Security로 강의를 따라가며 차근차근 로그인,회원가입을 만들어보았는데 대부분 생소한 내용이여서 아직도 JWT관련 부분은 강의가 자세히 나와있지도 않았고, 덧붙여서 할사람은 하라는식의 내용이였기 때문에 큰틀에서만 정리하고 Security 관련 부분은 아래 내용에 하나씩 차근차근 정리해나갈 생각이다. 우선, 바로 저번주 메모장 프로젝트에 이어서 로그..