---
# System prepended metadata

title: 채연님 수업

---

# 채연님 수업

# 공지사항
- Realworld
    - [Todo list 만들기는 이제 그만, 우아한 형제](https://techblog.woowahan.com/2672/)
    - [API 스펙](https://realworld-docs.netlify.app/docs/specs/backend-specs/introduction)
    - [데모페이지](https://demo.realworld.io/#/)
- 추천 강의
    - [최범균, JPA 기초](https://youtube.com/playlist?list=PLwouWTPuIjUi9Sih9mEci4Rqhz1VqiQXX)
    - [김영한, 스프링 입문](https://www.youtube.com/watch?v=qyGjLVQ0Hog&list=PLumVmq_uRGHgBrimIp2-7MCnoPUskVMnd)
- 20회차 프로젝트 종료
- 22회차 포트폴리오
- 18 19 20: 프로젝트 진행
- 21 22: 포트폴리오, 이력서, 면접
- 18회차 5회 분량의 입금

# 20230620 18 회차 (1시간 수업)
## 과제
- Delete Comment (댓글 삭제)
- Get Comments from an Article (댓글 가져오기)
- Unfollow user (언팔로우)

# 20230613 17 회차 (1시간 수업)
## 과제
- Unfollow user (언팔로우)
- Add Comments to an Article (댓글 남기기)
- Get Comments from an Article (댓글 가져오기)
- Delete Comment (댓글 삭제)

# 20230606 16회차 (1시간 수업)
## 과제 
- 포스트맨 테스트 -> 코드 분석 -> PR 리뷰
    - https://github.com/CHyeony/project_202303/pull/33
    - https://github.com/CHyeony/project_202303/pull/34
- Unfollow user (언팔로우)
- Add Comments to an Article (댓글 남기기)
- Get Comments from an Article (댓글 가져오기)
- Delete Comment (댓글 삭제)

# 20230517 15회차
## 과제
- 포스트맨으로 좋아요 여부, 좋아요 개수 조회 api 테스트 후 머지 (https://github.com/CHyeony/project_202303/pull/24)
- api 별로 이슈 만들기
- api
    - Get Profile (프로필 조회 api)
    - Follow user (팔로우)
    - Unfollow user (언팔로우)
    - Add Comments to an Article (댓글 남기기)
    - Get Comments from an Article (댓글 가져오기)
    - Delete Comment (댓글 삭제)
- 생활코딩 git 충돌 해결하기 시청 (https://opentutorials.org/course/4587/29485)
- JPA 서적 7, 8장

## 남은 api 목록
- Get Profile
- Follow user
- Unfollow user
- Add Comments to an Article
- Get Comments from an Article
- Delete Comment

- List Articles
- Feed Articles
- Get Tags

# 20230502 14회차
## 과제
- 게시글 좋아요, 좋아요 취소
    - api 테스트하기
    - 이해하고 머지하기
- 좋아요 개수, 여부 반환(https://github.com/CHyeony/project_202303/issues/22)
- 충돌나는 브랜치 충돌 해결하고 마스터에 머지하기 (https://github.com/CHyeony/project_202303/pull/18)
    - 머지 순서는 18번 pr -> 23번 pr
- JPA 5,6장

# 20230425 13.5회차
- 마음 다잡기
- 정처기
- 목표하는 곳
    - 집에서 멀지 않은 곳 (수원 인계동)
    - 업무적으로 원하는 것?
        - https://jojoldu.tistory.com/278?category=689637
        - https://jojoldu.tistory.com/279?category=689637
- 코드 짜보기
    - https://www.inflearn.com/course/java-codesquad#
- 프로젝트 일정 기한: ~ 2023-05-16

# 20230418 13회차
## TODO
- 게시글 수정, 삭제 API

## 과제
- 게시글 slug 조회 API 피드백 수용
- 게시글 수정 API 코드 이해하고 머지하기 (https://github.com/CHyeony/project_202303/pull/19)
- 게시글 좋아요, 좋아요 취소(https://github.com/CHyeony/project_202303/issues/21)
- 좋아요 개수, 여부 반환(https://github.com/CHyeony/project_202303/issues/22)
- JPA 서적 6장

# 20230411 12회차
- ChatGPT 번역기 - 프롬프트 지니(https://chrome.google.com/webstore/detail/chatgpt-for-google-no-ads/elnanopkpogbhmgppdoapkjlfigecncf?hl=ko)
- 프로그래머스 (https://school.programmers.co.kr/learn/challenges?order=recent)
## 과제
- 사용자 수정 API 코드 이해 (https://github.com/CHyeony/project_202303/pull/16)
- 게시글 생성 API 코드 이해 (https://github.com/CHyeony/project_202303/pull/17)
- 게시글 조회 API 개발
- JPA 서적 4장, 5장

# 20230404 11회차
- 커밋 컨벤션 https://github.com/dungsil/TIL/blob/master/git/190506__%EC%9C%A0%EB%8B%A4%EC%8B%9C%ED%8B%B0_%EC%BB%A4%EB%B0%8B%EB%A9%94%EC%8B%9C%EC%A7%80_%EC%8A%A4%ED%83%80%EC%9D%BC%EA%B0%80%EC%9D%B4%EB%93%9C.md
## 과제
- 사용자 수정 API 코드 이해하고 머지하기
  (추가로 코드를 작성해도 됨 예를 들어 테스트 코드)
- 게시글 생성 API
  (feature/13-create-article 브랜치 이어서 작업하면 됨)
- 게시글 조회 API
- JPA 서적 3장

## TODO
- 사용자 정보 변경 API 구현(https://github.com/CHyeony/project_202303/issues/5)


# 20230328 10회차
## 과제
- 9회차 과제와 동일함
- JPA 서적 4장

# 20230314 9회차
## 과제 
- 로그인 API 구현 (https://github.com/CHyeony/project_202303/issues/1)
- 로그인한 사용자 조회 API 구현 (https://github.com/CHyeony/project_202303/issues/4)
- 사용자 정보 변경 API 구현(https://github.com/CHyeony/project_202303/issues/5)
- Tip
    - 사용자 조회 API, 정보 변경 API -> 로그인한 상태에서만 호출 가능함
    - 로그인한 상태를 어떻게 알 수 있죠?
    - Authorization: Token {userAccountId}
        - Token 1
        - Token 2

# 20230308 8회차
## 과제
- JPA 서적 3장까지 (자유)
- Git 강의 수강 (자유)
    - https://opentutorials.org/course/3840
- Entity, Repository 생성 PR 작성 (이슈 따로 만들어주세요.) (필수)
    - article entity
    - API 스펙을 잘 파악해서 구현해야 함
    - JPA 서적도 많이 참고하시길...

# 20230301 7회차
## 프로젝트
- Realworld
    - [Todo list 만들기는 이제 그만, 우아한 형제](https://techblog.woowahan.com/2672/)
    - [API 스펙](https://realworld-docs.netlify.app/docs/specs/backend-specs/introduction)
    - [데모페이지](https://demo.realworld.io/#/)
- 과제
    - ~ 3월 7일 과제
        - start.spring.io
            - gradle
            - Spring Boot 2.x 버전대로 사용
            - Java 8
            - Spring Web
            - Spring Data JPA
            - H2
            - Lombok
        - Git 강의 수강
            - https://opentutorials.org/module/3733
            - https://opentutorials.org/course/3839
        - 본인 GitHub에 프로젝트 업로드
        - JPA 서적 1장까지
        - 모르면 질문하기 꼭...ㅋㅋㅋㅋㅋㅋㅋㅋ
- ERD (같이...)
    - user
    - follow
    - article
    - comment
    - favorite_article
    - article_tag

## JPA 서적
- http://www.yes24.com/Product/Goods/19040233

## 연관관계
- 양방향: Member <-> Team 
    - Member.getTeam(): Team \@ManyToOne
    - Team.getMembers(): List\<Member\> \@OneToMany
- 단방향: Member -> Team O, Member <- Team X
    - Member <- Team
- 선택은 자유. 양방향은 권장하지 않습니다.
- 일단은 단방향 매핑. 추후 필요하면 양방향 매핑.
- 연관관계의 종류
    - ManyToOne
    - OneToMany
    - OneToOne: 양방향 가능. 이것도 웬만하면 단방향으로
    - ManyToMany: 중간에 연관관계를 위한 테이블이 하나 있음


### ManyToMany 예시
- member
    - member_id (PK)
- order
    - member_id (FK)
    - product_id (FK)
    - order_id (PK)
- product
    - product_id (PK)


## 영속성 컨텍스트
- 인메모리에서 엔티티를 관리하는 환경
- Transactional -> DB 트랜잭션 -> JPA 영속성 컨텍스트
- 엔티티
    - New: 비영속
    - Managed: 영속
    - Detached: 준영속
    - Removed: 삭제된 상태
    - removed -> managed
    - managed -> removed
    - managed -> detached
    - detached -> managed
- 엔티티 매니저 (EntityManager)
