2월 1주차

이름이름·2023년 2월 4일
0

TIL

목록 보기
2/2

2/4

  1. 글 작성 시 작성자(user객체) 등록

  2. 글 작성시간 postman으로 post요청 시 시간 기록
    postman에서 post를 보냈을 때 그 보낸 시점이 기록되기를 바랬다
    DTO클래스에 있는 Localdatetime타입으로 선언한 필드 위에 @CreatedDate를 붙여주니 되었다

  3. postman으로 데드라인 날짜-시간 보내기

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")  //데드라인을 어떤형식으로 받을지 명시
    private LocalDateTime deadline;
  4. git 연결 주소 바꾸기
    git remote -v로 현재 어디에 연결되어있는지 체크
    git remote set-url origin 원하는 주소
    하면 연결주소가 바뀌게 된다

2/5

태그 기능 개발(1)

public class Tasknotice_Tag{
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "tag_id")
    private Tag tag;  
}

이런 상황에서 Tasknotice_Tag 안에 있는 여러 Tag객체들이 들어가야 하는상황이라서

public class Tasknotice_Tag{
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "tag_id")
    private List<Tag> tag;  
}

로 바꿔서 한 번 테스트 -> error 실패임

애초에 그러지 말고 위에거 원래대로 돌려놓고 Tasknotice_Tag 객체를 여러개 만들어서 Tasknotice id가 1이 있고 Tag id가 1 2 3 있다고 하면

Tasknotice_Tag id 1
Tasknotice id 1
Tag id 1

Tasknotice_Tag id 2
Tasknotice id 1
Tag id 2

Tasknotice_Tag id 3
Tasknotice id 1
Tag id 3

이런느낌으로 그냥 하나하나 만들어주는게 깔끔하다고 생각

@PostMapping("create/tasknotice")
    public CreateTasknoticeResponse createTasknotice(@RequestBody @Valid CreateTasknoticeRequest request){
        Tasknotice tasknotice = new Tasknotice();
        //tag_id만 리스트로 받고
        //태그버튼을 누르면 tasknotice_tag객체가 생성되게 하고
        tasknotice.setUser(userService.findOne(request.getUser_id()));
        tasknotice.setDate(LocalDateTime.now()); //생성시점
        tasknotice.setDeadline(request.getDeadline()); // postman으로 날짜받는거
        tasknotice.setTarget(request.getTarget());
        tasknotice.setTitle(request.getTitle());
        tasknotice.setExplanation(request.getExplanation());

        Long tn_id = tasknoticeService.save(tasknotice);
        //이러면 이제 과제공지글을 생성이 된거고 이 때 request로 tag_id받고 아래에 tasknoticetag로직 추가
        //request로 tag_id를 어떻게받을까 List로 받아서 for문으로 돌리자

        for(Long e : request.tag_idList){
            Tasknotice_Tag tasknotice_tag = new Tasknotice_Tag();
            tasknotice_tag.setTasknotice(tasknoticeService.findOne(tn_id));
            tasknotice_tag.setTag(tagService.findOne(e));
            tasknotice_tagService.save(tasknotice_tag);
        }

        return new CreateTasknoticeResponse(tn_id);  // new 조심
    }

이렇게 하고 돌려보니까 아래와 같이 제대로 된것을 확인!

2/6 and 2/7

em.flush(), em.clear()를 직접 호출하지 않는 이유가 있나요?

트랜잭션을 커밋할 때 자동으로 플러시가 발생합니다

그리고 트랜잭션의 범위를 넘어서게 되면 자동으로 영속성 컨텍스트가 종료됩니다.

따라서 이런 부분을 수동으로 하는 일은 거의 없습니다.

repository에서 삭제를 구현하려면?

em.find로 호출하면 DB에서 꺼내서 em으로 가져와 관리하는듯 하다
따라서 이상태에서 em.remove를 해준다면 삭제를 할 수 있는듯 하다

profile
공부 정리

0개의 댓글