inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 BE 1기 - 3주차 발자국

구르밍
0

조금 더 객체지향적으로 개발할 수 없을까?

이전에는 User를 따로 가져와 BookService에서 UserLoanHistory를 만들어 저장하였다.

조금 더 객체지향적으로 바꾸면 UserLoanHistory를 User에서 가져와 바로 대출을 처리하자!

@ManyToOne : 내가 다수이고 너가 한개

대출기록은 여러개이고 그 대출을 소유하고 있는 사용자는 한명이다 → N : 1 관계

//private long userId;
@ManyToOne
private User user;

@OneToMany : 나는 한개 너가 다수

@OneToMany
privateList<UserLoanHistory> userLoanHistoryList = new ArrayList<>();

여러개의 대출기록 N개이기 때문에 List로 표현

이로써 User와 UserLoanHistory는 서로 연관관계가 되었다. 그 중에 주인은 누구인가?

누가 관계의 주도권을 가지고 있는가?

현재는 user_loan_history가 user_id를 DB 컬럼으로 가지고 있기 때문에 주인이다.

연관관계의 주인이 아닌 쪽에 mappedBy 옵션을 달아 주어야 한다.

@OneToMany(mappedBy = "user") 
privateList<UserLoanHistory> userLoanHistoryList = new ArrayList<>();

 

1:1 관계

배포란 무엇인가

배포란 : 최종 사용자에게 SW를 전달하는 과정 → 전용 컴퓨터에 우리의 서버를 옮겨 실행시키는 것

전용 컴퓨터가 없는데..? → AWS를 빌리자!!

AWS에서 컴퓨터를 빌릴 때 한 가지 알아두어야 할점!

profile과 H2 DB

똑같은 서버 코드를 실행시키지만, 우리 컴퓨터에서 실행할 때는 우리 컴퓨터의 MySQL을 사용하고,

전용 컴퓨터에서 실행할 때는 전용 컴퓨터의 MySQL을 사용하고 싶다

→ profile 개념 똑같은 서버 코드를 실행시키지만, 실행될 때 설정을 다르게 하고 싶을 때

(DB 이외에도 다른 API, 다른 기능 등 ..)

Profile을 적용해보자

profile 설정

나는 인텔리제이 유료버전이라 강사님 처럼 active profile 부분이 안뜨기 때문에 다른방법으로 진행하였다.

image-Dspring.profiles.active=local

local 또는 dev로 입력해주면 된다.

 

AWS의 EC2 사용하기

AWS 가입 후 지역을 서울로 변경

EC2

인스턴스 - 내가 빌린 컴퓨터 (현재 0)

인스턴스 시작 버튼 클릭

인스턴스 유형은 컴퓨터의 사양

t2.micro 선택 !


회고

벌써 워밍업도 마지막을 향해 달려가는 중이다!!

7번째 과제에서 아직 나는 JPA에 익숙하지않아서 뭔가 직접 쿼리를 쓰는게 더 편했던 것 같다. @Query를 통해 직접 작성해주었다가 어? 이렇게하면 JPA에서 알아서 해주는구나 하고 여러번 바꾸기도 했다!

근데 만약 쿼리에 조건이 너무 많을 경우에는 이름이 너무 길어지지 않을까라는 생각도 했었다 ㅎ..

중간에 자꾸 테이블에 해당 컬럼이 없다고 오류가 나길래 .. 그럴리가 없는데라고 생각했지만 그럴리 있었다. 역시 컴퓨터는 거짓말을 하지 않는다 하하

확실히 강의만 보는 것보다 직접 내가 생각하고 타이핑하는 것이 내가 어느정도까지 실제적으로 이해했는지 확인할 수 있는 길인 것 같다.

앞으로 남은 마지막 미니 프로젝트까지 잘 마무리하면서 개념 부분을 더 공부해보자!

백엔드 워밍업 백엔드 스프링

답변 0