컴공생의 발자취

[내일배움캠프 22일차 TIL] Entity 상태 및 MySQL CLC 명령어와 개인과제 시작 본문

🤝 활동/내배캠TIL

[내일배움캠프 22일차 TIL] Entity 상태 및 MySQL CLC 명령어와 개인과제 시작

MNY 2024. 5. 17. 01:31
728x90
반응형
오늘의 진도 : Spring 입문주차 2주차 완강...

개념 어렵당..
오늘의 학습, 오늘의/지난 날의 궁금증, 개인과제, 오늘의 회고 이렇게 4개의 큰 틀로 나누어 정리할 것이다.

 

💡 오늘의 학습 키워드

- Spring 입문주차 2주차 -
IoC & DI
MySQL CLC 명령어
@Component & @Autowired
3 layer 애너테이션
ORM
필수 패키지
영속성 컨텍스트
트랜잭션
Entity 상태

 


 

IoC & DI

: DI를 통해 IoC를 지킨다.

  • IoC(제어의 역전) : 설계원칙
  • DI(의존성 주입) : 디자인 패턴

 

MySQL CLC 명령어

  1. show databases; : 현재 몇 개의 데이터베이스가 있는지 확인 명령
  2. use database명; : 해당 database를 사용할 때 쓰는 명령어
  3. show tables; : 해당 데이터베이스에 어떤 테이블이 있는지 확인할 때 쓰는 명령어
  4. create database database명; : 데이터베이스 생성 명령어

 

* 참고한 블로그

 

Windows 환경에서 Database(MySQL) 개발 환경 구축

💡 Check if mysql is installed before downloading 내 PC(장비)의 Windows 버전 체크 Windows 키 + R 내 PC(장비)에 MySQL이 설치 되어있는지 (로컬)서비스에서 확인 MySQL이 없다면 내 PC(장비)

velog.io

 

@Component & @Autowired

  • @Component : 해당 클래스를 Bean으로 등록
  • @Autowired : 생성자 1개일 경우는 생략 가능(Spring 4.3이상) / Bean 주입 
    * 필드, 매서드, 생성자 가능 / But 생성자 사용을 지향

 

3 layer 애너테이션

* 내부적으로 가져다가 사용

  • Service : @Service
  • Repository : @Repository
  • Controller
    • @RestController
    • @RequestMapping("/api")

 

필수 패키지

  • controller
  • service
  • repository
  • entity
  • dto

 

ORM(Object-Relational Mapping)

: 객체와 데이터베이스를 매핑해주는 도구

 

영속성 컨텍스트

: Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간

 

트랜잭션

: 모든 SQL이 성공적으로 수행이 되면 DB에 영구적으로 변경을 반영하지만, SQL 중 단 하나라도 실패한다면 모든 변경을 되돌린다.

 

Entity 상태

  • 비영속(Transient) : new 연산자를 통해 인스턴스화된 Entity 객체
  • 영속(Managed)
    • persist(entity) : 비영속 Entity를 EntityManager를 통해 영속성 컨텍스트에 저장하여 관리되고 있는 상태로 만듦
  • 준영속(Detached) : 영속성 컨텍스트에 저장되었고 MANAGED 상태 즉, JPA가 관리하는 영속 상태의 Entity가 되었음
    • 영속 -> 준영속
      • detach(entity) : 특정 Entity만 준영속 상태로 전환
      • clear() : 영속성 컨텍스트를 완전히 초기화
      • close() : 영속성 컨텍스트를 종료
    • 준영속 -> 영속
      • merge(entity) : 전달받은 Entity를 사용하여 새로운 영속 상태의 Entity를 반환
  • remove(entity) : 삭제하기 위해 조회해온 영속 상태의 Entity를 파라미터로 전달받아 삭제 상태로 전환

 


오늘의 궁금증

  • Q : 객체의 불변성에 대해 궁금... ?

 

지난 날의 궁금증

  • 아직 찾아보지 못 한 궁금증(더보기 ..Click!)
더보기
  • Q : 참조는 reference인데 자바는 call by value로만 동작하는 것 아닌가?
  • Q : wrapper클래스.. 그래서 무슨 기능들을 가지고 있는데?
  • Q : Object.equals와 str.equals의 차이? // 요건 공식 문서를 찾아봐야겠어..
  • Q : JDBC 이란?
  • Q : ORM 이란?

 


개인과제

일단 제출할 레파지토리만 만들어봤다...

 

GitHub - ysy56/agendaAppServer: 개인과제 두 번째 : 나만의 일정 관리 앱 서버

개인과제 두 번째 : 나만의 일정 관리 앱 서버. Contribute to ysy56/agendaAppServer development by creating an account on GitHub.

github.com

 

 


오늘의 회고

  • 12시간 중 얼마나 몰입했는가?

하.. 진짜 열심히 몰입해서 공부했다고 생각은 하는데

뭔가 손틈 사이로 흘러내리는 모래알 같다.. 담아도 담아도 다 흘러버리는 게 담기는 게 있긴 한건지 의문이 든다.

24시간이 모자라 진짜

 

  • 오늘의 생각

하나 밖에 안 든다.. 과제 제출할 수 있을까?

뭔가 과제 제출란 보고 심란해짐..

 

과제 제출란의 빈칸.. 6개!

  1. GitHub 링크 제출
  2. 수정, 삭제 API의 request를 어떤 방식으로 사용? (param, query, body)
  3. RESTful한 API를 설계했나요? 어떤 부분이 그런가? 어떤 부분이 그렇지 않은가?
  4. 적절한 관심사 분리를 적용하였나? (Controller, Repository, Service)
  5. API 명세서 작성 가이드라인을 검색하여 직접 작성한 명세서와 비교하고 차이점 설명
  6. 이번 과제 몇 단계까지 완성함?

 

다시 봐도 심란해진다.. 2, 3, 4, 5가 심란한 부분...

나 ERD도 생각 못했고 유스케이스 다이어그램도 생각 못했는데? 아 맞아 API 명세서도 작성해야지..

할 거 대따 많네 진짜! 3일 반 주고 강의 시간이 14시간인데 그거 공부하면서 저런 고민은 또 언제 해서 과제 제출하냐고ㅋㅋㅋㅋㅋ 으아아아ㅏㅏㅏ

 

그래도 난 할 수 있다. 화이팅👊

  • 내일 학습할 것은 무엇인지

일단, 개인과제 제출해야 된다.

  1. 유스케이스 다이어그램 작성 -> RESTful한 설계, 관심사 분리(Controller, Repository, Service)
  2. API 명세서 작성 -> 수정, 삭제 request 방식(param, query, body)
  3. ERD 작성
  4.  

 

 

// 해시태그 : til, 국비, 내일배움캠프, 부트캠프, 스파르타내일배움캠프, 스파르타내일배움캠프TIL, 스파르타코딩클럽

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형