[인프런 워밍업 클럽 BE 0기] 3주차 발자국
Day 11 : 객체지향과 JPA 연관관계
JPA를 이용하여 대출 기능 관계를 수정했다.
UserLoanHistory 클래스에서 기존 userId 를 user객체로 설정한 후 @ManyToOne을 이용해 연관관계를 설정했다.
N:1 연관관계는 @ManyToOne, @OneToMany를 설정하면 된다. 연관관계 주인을 설정해줘야 하는데 두 클래스 중 상대의 정보를 가지고 있는 쪽이 주인이다. userLoanHistory의 경우도 User 정보를 갖고 있기 때문에 주인이다. 주인이 아닌 쪽에는 mappedBy 설정을 해줘야 한다.
@Getter
@Entity
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false,length=20,name="name")
private String name;
@Column
private Integer age;
@OneToMany(mappedBy = "user")
private List<UserLoanHistory> userLoanHistories = new ArrayList<>();
protected User() {
}
public User(String name, Integer age) {
if(name==null || name.isBlank()){
throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다",name));
}
this.name = name;
this.age = age;
}
public void updateName(String name){
this.name = name;
}
}
@Entity
@Getter
@NoArgsConstructor
public class UserLoanHistory {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private User user;
private String bookName;
private boolean isReturn;
public UserLoanHistory(User user, String bookName, boolean isReturn) {
this.user = user;
this.bookName = bookName;
this.isReturn = isReturn;
}
public void doReturn(){
this.isReturn = true;
}
}
//BookService userLoanHistory 데이터 저장
userLoanHistoryRepository.save(new UserLoanHistory(
user,book.getName(),false
));
이외에도 JoinColumn, cascade, orphanRemoval 옵션이 있다.
Day 12 : 기본적인 배포를 위한 준비 ~ Day 13 : AWS와 EC2 배포
배포란 최종 사용자에게 SW를 전달하는 과정이다.
AWS에서 EC2를 이용해 가상 서버를 빌릴 수 있다.
명령어를 이용해 EC2에 접속할 수 있다
chmod 400 -> 보안 처리
mkdir -> 폴더 생성
ls -> 현재 위치에서 폴더나 파일을 확인하는 명령어
cd -> 파일로 이동
pwd -> 현재 위치를 확인하는 명령어
rmdir -> 비어있는 폴더를 제거하는 명령어
강의에 있는 코드를 그대로 사용해 mysql을 설치하다 오류가 발생했다.
이유는 버전 이슈였다.
해결 방법은 아래 링크에 자세히 소개되어 있으니 참고하면 좋을 듯 하다.
EC2 인스턴스에서 MySQL 설치시 confliction requests 에러가 발생하는 문제 해결
학기가 시작되어 시간이 없다보니 결국 프로젝트를 1단계만 진행했다.
스터디 기간동안 많은 것을 얻어갈 수 있었고 EC2를 이용해 배포까지 할 수 있어서 좋았다.
댓글을 작성해보세요.