[KT AIVLE] 빅프로젝트(6)

onlyJoon·2023년 6월 14일
0

KT AIVLE

목록 보기
22/31
post-thumbnail

작성일: 2023.06.14(수)

KT AIVLE AI 개발자 트랙 3기 과정의 마지막인 빅프로젝트를 진행하고 있습니다.


Daily Scrum

내 역할, 협업 내용, 나머지는 팀원 담당

What did you do yesterday?

  • spring 기초 공부
  • react 기초 공부
  • react 컴포넌트 트리 초안 작성
  • Wi-Fi 데이터 수집 및 AI 모델링

What will you do today?

  • spring JPA 활용 실습
  • 회원가입 API 구현
  • 회원가입, 로그인 기능 구현
  • react 컴포넌트 트리 초안 작성
  • Wi-Fi 데이터 AI 모델링
  • 카메라 데이터 수집 및 AI 모델링

Are there any impediments in your way?

  • 카메라 데이터 포즈 분류
  • Wi-Fi 수신기 데스크탑 메인보드 고장
  • JWT 토큰 관련 학습

What I did today

JPA 활용

섹션 1. 프로젝트 환경설정

1) 프로젝트 설정

  • Spring Initializr: 스프링 부트 스타터
  • Dependencies
    • JPA: 유틸리티성 라이브러리. 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크
    • thymeleaf: 템플릿 엔진. JSP보다 좋음. JSP는 요즘 거의 쓰지 않음
    • h2: 개발, 테스트 할 때 유용한 DB
    • lombok: 간단한 어노테이션(@)을 통해 코드 반복을 줄여주는 라이브러리

오류 발생

  • 위에서 프로젝트를 생성하고, IntelliJ에서 임포트한 과정에서 Unsupported class file major version 64 오류가 발생함
  • 스프링 부트와 자바의 버전이 맞지 않아서 생긴 오류 --> IntelliJ - Gradle에서 JAVA버전을 달리 보고 있었음

오류 해결

  • Settings - Build - Gradle 에서 Gradle JVM을 스프링 부트에 맞는 버전으로 변경

2) 라이브러리 살펴보기

의존관계 확인하기

  • 터미널에서 프로젝트 경로로 들어가서 ./gradlew dependencies 실행

스프링 부트 라이브러리

  • 많은 라이브러리가 있지만 대표적인 것만 살펴봄

(1) web

  • tomcat: 임베디드 웹 서버
  • webmvc

(2) thymeleaf

(3) JPA

  • aop
  • jdbc: tx, template 등이 포함됨
  • HikariCP: 커넥션 풀
  • hibernate
  • spring data JPA

(4) logging

  • logback
  • slf4j

테스트 라이브러리

(1) spring-boot-starter-test

  • junit: 테스트 프레임워크
  • mockito: 목 객체 만드는 라이브러리
  • assertj: 테스트 코드를 편하게 작성하도록 도와주는 유틸리티성 라이브러리
  • spring-test: 스프링 통합 테스트 지원

핵심 라이브러리 정리

  • 스프링 MVC
  • 스프링 ORM
  • JPA, Hibernate
  • 스프링 데이터 JPA

기타 라이브러리 정리

  • H2 database client: 다운받은 h2 버전과 클라이언트 버전이 맞아야 함
  • HikariCP: 스프링 부트의 기본 커넥션 풀
  • thymeleaf: WEB 관련
  • 로깅, 테스트

3) View 환경설정

  • thymeleaf를 사용: 스프링에서 밀어주는 엔진
  • 장점
    • 마크업을 깨지 않고 사용 가능
    • 웹 브라우저에서 열림
  • 단점
    • 태그를 무조건 닫아줬어야 함(버전 3에서 해결됨)
  • 요즘은 뷰템플릿을 사용해 서버에서 렌더링하기보다는 react, vue 등으로 해결하는 경우가 많음

ViewName 매핑

  • 자동으로 잡아줌
  • resources: templates/{ViewName}.html

4) H2 데이터베이스

  • 다운받은 h2의 경로로 이동후 ./h2.sh 실행
  • 콘솔에서 jdbc:h2:~/jpashop 실행 -> "jpashop.mv.db"가 홈 디렉토리에 생성됨
  • 이후부터는 콘솔에서 네트워크 모드로 접속 권장 -> jdbc:h2:tcp://localhost/~/jpashop

5) JPA와 DB 설정

  • 프로젝트에서 properties 대신 yml 파일 만들기(resources 폴더)

jpa.hibernate.ddl-auto: create

  • 애플리케이션 실행 시점에 테이블을 지우고 재생성

show_sql vs org.hibernate.SQL

  • show_sql: System.out에 하이버네이트 실행 SQL을 남김
  • org.hibernate.SQL: logger를 통해 남김

꿀팁: 쿼리 파라미터 로그 남기기

  • org.hibernate.orm.jdbc.bind: trace: yml에 추가
  • implemetation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0': build.gradle에 추가

마치며

오늘 팀원이 예기치 못한 상황을 겪기도 하고, 데이터 수집에 쓰이는 컴퓨터 메인보드가 나가기도 하는 등의 사건 사고가 있었다.
하지만 다행히도 이번 주 메인 목표였던 AI파트에서 카메라와 Wi-Fi로 수집한 데이터를 가지고 모델을 어느정도 학습했다고 한다.
프로젝트에서 AI가 중심을 담당하고 있기 때문에 모델의 구현과 성능이 가장 중요한 것 같다.

내일 3주차 점검 발표 시간이 있을 예정인데, 백엔드 파트에서 보여줄만 한 결과물이 없다...
우선 내일 오전에 발표자료를 만들면서 백엔드 파트 팀원과 소통을 해야할 것 같다.
프론트 팀원들도 공부를 어느정도 진행한 상황에서 조금씩 구현을 하는 중인 상황.
이번 주는 어떤 따끔한 피드백을 받을지 벌써부터 궁금하다.

profile
A smooth sea never made a skilled sailor

0개의 댓글