동물 병원 줄서기
프로젝트를 시작했다.
그 중 맡은 부분은 병원 등록, 검색, 줄서기 기능이다.
@Entity
@NoArgsConstructor //기본생성자 롬복
class Hospital {
}
필드
와 DB의 컬럼을 매핑하는 어노테이션@Entity
@Getter
@NoArgsConstructor
public class Hospital {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long hosId;
private String hosName;
private String hosPhone;
@Enumerated(EnumType.STRING)
private HosStatus hosStatus;
@Enumerated(EnumType.STRING)
private HosBooking hosBooking;
private String hosOpenhour;
}
@Entity
@Getter
@NoArgsConstructor
public class HosImg {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long himId;
private String himPath;
private boolean himMain;
private String himOrigin;
}
병원
객체를 필드 값으로 갖고 있다.속성 | 내용 |
optional | 참조하는 엔티티가 항상 있어야한다는 조건 |
fetch | 패치 전략에 속성인데, N+1문제를 해결할 때 자세한학습 필요 |
cascade | 부모객체로부터의 영속성을 전이 받을 지에 대한 여부 |
(mappedBy="필드명")
을 통하여 참조된 객체의 필드를 명시해 매핑양방향 관계
를 맺음List<엔티티>
를 필드타입으로 가져 해당 객체를 참조하는 객체들을 리스트로 담고 있다.(mappedBy="필드명")
을 통하여 참조된 객체의 필드를 명시해 매핑@ManyToOne
,@OneToOne
을 통하여 FK가 있는 쪽에만, 매핑 해놓은 관계@OneToMany
,@OneToOne
을 줘서 참조하고 있는 객체를 필드 값으로 가지고 있게 함List<>
부서
와 사원
이 있으면 FK가 있는 사원
이 주인이다@Entity
@Getter
@NoArgsConstructor
public class Hospital {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long hosId;
private String hosName;
private String hosPhone;
@Enumerated(EnumType.STRING)
private HosStatus hosStatus;
@Enumerated(EnumType.STRING)
private HosBooking hosBooking;
private String hosOpenhour;
//양방향 관계(1:N)
@OneToMany(mappedBy = "hospital", cascade = CascadeType.ALL, orphanRemoval = true)
private List<HosImg> hosImgs = new ArrayList<>();
}
@Entity
@Getter
@NoArgsConstructor
public class HosImg {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long himId;
private String himPath;
private boolean himMain;
private String himOrigin;
//N:1
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "hosId") //hosImg 테이블의 컬럼명
private Hospital hospital;
}