Diary로 Crud 기능 추가

NJW·2023년 3월 26일
0

HCI project

목록 보기
4/14

3/26

방향을 좀 수정하기로 했다. 본래는 회원가입과 로그인 기능을 먼저 만들려고 했지만, Spring Security가 익숙하지 않은 탓에 일단 Diary 기능을 먼저 작성하기로 결정했다. Spring Security는 강의를 끊어 뒀다. 정보는 많지만 너무 산발적이라 초보인 내가 보기 어려웠다

Diary

일단 컨셉은 매일마다 한 줄씩 일기를 쓰는 것이다.

Entity

id, 일기를 작성한 날짜, 일기 제목, 일기 내용을 넣어줬다.

클래스 위에 @Entity를 넣어서 엔티티임을 표시하고 lombok으로 @Setter과 @Getter을 넣어줬다.

id의 경우 @Id로 id임을 표시하고 @GeneratedValue로 스프링이 자동으로 값을 할당하도록 했다.

@Entity
@Setter @Getter
public class Diary {

    @Id
    @GeneratedValue
    private Long id;
    private LocalDate date;
    private String title;
    private String content;
}

Repository

해당 레파지토리에 CRUD 기능을 넣어줬다. 그렇기에 EntityManger em에 @PersistenceContext를 넣어서 영속성 관리를 하도록 했다.

먼저 Create에 해당하는 save. Dairy를 받아아와서 em.persist()로 넣어줬다.

하나만 찾는 기능은 em.find를 이용했고 전부 찾는 것과 날짜를 찾는 건 쿼리를 이용했다. 날짜를 찾아오는 건 중복되는 날짜에 새 글을 넣어줄 경우 오류가 생기는 기능을 위해 꼭 필요하다.

그리고 delete기능. 이 기능은 em.remve로 해당 id를 찾아와서 삭제하도록 했다. 그리고 em.remove가 끝나면 em.flush와 em.clear로 em을 비워줬다.

delete

    //delete
    public void delete(Long id){
        em.remove(em.find(Diary.class, id));
        em.flush();
        em.clear();
    }

Service

서비스 기능으로 레파지토리에서 구현한 기능들을 이용하면 된다.

다만, 새로운 일기를 추가할 때는 날짜를 먼저 검색해서 중복되는 날짜가 있는지를 확인하도록 했다.

또한 update기능은 변경 감지를 이용했다. diaryId를 이용해서 레파지토리에서 해당 diary를 찾아온 다음에 findDiary에 넣어준다. 여기서 findDiary는 영속성 상태이다. 그렇게 findDiary를 이용해서 영속성 상태인 데이터를 바꿔주면 된다.

update

    @Transactional
    public void updateItem(Long diaryId, Diary param){
        //findDiary는 영속성 상태이다.
        Diary findDiary = diaryRepository.findOne(diaryId);

        //영속성 상태인 데이터를 바꿔준다.
        findDiary.setContent(param.getContent());
        findDiary.setTitle(param.getTitle());
        findDiary.setDate(param.getDate());
    }

깃허브

branch 기능을 써보고 싶어서 해당 변경 내용은 feature/diary1으로 브랜치를 새로 생성해서 commit을 해줬다.

명령어

  1. 브랜치 만들기
$ git branch 브랜치 이름
  1. 새로 만들어준 브랜치로 체크아웃
$ git checkout 브랜치 이름
  1. 변경 내용 Git 저장소에 추가
$ git add 새로 변경한 내용 -> 만일 전부 넣으려면 .을 사용
  1. 변경 내용 commit해서 Git이 관리하도록 함
$ git commit 새로 변경한 내용 -> 만일 전부 넣으려면 .을 사용
  1. 원경 저장소에 push
$ git push oringin 원하는 브랜치
여기서 해당 브랜치에 들어있는지 확인한다.
  1. origin(master)에 merge하기

origin(master)로 체크아웃

$ git checkout master

원하는 브랜치 merge

$ git merge merge할 브랜치

원격 저장소에 push

$ git push .

깃허브 주소

https://github.com/po2283/Blog

profile
https://jiwonna52.tistory.com/

0개의 댓글