Open newcodingtest opened 2 years ago
현재 고민은.. 상위작업 조회 시점에서 하위작업들을 같이 보여줘야 하는데
아니면
ㄴ 1번의 경우 컨트롤러에서 하나의 service 만 호출하면 되지만 2번의 경우 2개의 service 를 호출해야 된다.(컨트롤러가 복잡해질수도있음)
생각해보면 상위작업 수정시 하위작업도 같이 수정되기 때문에 아무래도 연관관계를 설정하여 하나로 묶어서 처리하는게 깔끔할꺼같다.
public class Task extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="TASK_ID")
private Long tid;
.
.
.
@OneToMany(mappedBy = "task", fetch = FetchType.EAGER, orphanRemoval = true)
private List<SubTask> subTask = new ArrayList<SubTask>();
@PostMapping("/modify")
public String doModify(TaskDTO dto,RedirectAttributes redirectAttributes) {
log.info("----------doModify----------");
log.info("tid: "+dto.getTid());
taskService.modify(dto);
return "redirect:/task/list";
}
연관관계를 설정해주면 컨트롤러에서도 파라미터로 상위타입(TaskDTO) 하나로 하위까지 한번에 받을수 있게되어 보다 깔끔해진다.
서비스 레이어까지 상위타입으로 넘긴다음 서비스 레이어에서 2개의 repository를 호출해서 처리하는게 좀더 깔끔한 코드가 될거같다
6,7번 같은 경우 현재 FE 에서는 읽기 페이지에서 바로 수정을 할수있게 구현한 상태이다. 그래서 읽기 페이지에서 바로 저장 버튼을 누를때 1.변경된 것이 없으면 아무것도 안하고
하는 3가지 행동을
저장 이벤트 하나에서 처리해야한다. 엔티티 조회 및 더티체킹을 엄청 주의 해서 개발해야한다.
Project(프로젝트)-Task(상위작업)-SubTask(하위작업)
Project(프로젝트)-Task(상위작업)
1 : N
Task(상위작업)-SubTask(하위작업) 1 : N
1.상위작업은 프로젝트와 관련된 작업을 등록할수있다. 2.상위작업은 개인의 private한 프로젝트와 관련없는 작업을 등록할수있다. 3.하위작업은 상위작업이 있어야지만 등록이 가능하다. 4.상위작업의 진행률은 하위작업들의 진행률들을 모아 계산된값이다. 5.상위작업의 시작일, 종료일은 하위작업의 최소 시작일, 최대 종료일이다. 6.상위작업 삭제시 하위작업들도 같이 모두 삭제된다. 7.상위작업 수정시에 동시에 하위작업들을 같이 수정할 수 있다.