[인프런 워밍업 클럽 BE 0기] 3주차 발자국

[인프런 워밍업 클럽 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를 이용해 배포까지 할 수 있어서 좋았다.

 

댓글을 작성해보세요.