Spring

백엔드 스프링 스터디를 시작하며 - 2편

광터틀 2024. 1. 23. 15:11

백엔드 스프링 스터디를 시작하며 - 1편 은 여기에서!!!

https://turtle-codingstudy.tistory.com/43  

 

백엔드 스프링 스터디를 시작하며 - 1편

군대 전역 후, 개인적으로 하고 싶었던 활동을 마무리하니 벌써 세월이 지금까지 흘렀다...^^ 갑자기 발등에 불이 떨어졌음을 깨닫고 급히 공부를 시작하려는데, 도저히 계획이 안 선다... 조금

turtle-codingstudy.tistory.com

 

 

첫 주차 

새로 스터디를 함께 하기로 한 분과 김영한 강사님의 스프링부트와 JPA 실무 완전 정복 로드맵 을 따라가기로 했다. 중간에 추가로 중간중간 작은 프로젝트를 하며 보완해나가는 목표로 시작하려 한다.

우리 둘 다 [자바 ORM 표준 JPA 프로그래밍 - 기본편], [실전! 스프링부트와 JPA 활용1 - 웹 어플리케이션 개발] 은 듣는 중이었기에 한 주 동안 듣던 것을 마무리 하고 [JPA 활용 2] 로 넘어가는 것을 목표로 첫 주 스터디를 마무리 했다. 


둘째 주차 

다음주가 되어 만났는데 생각보다 [JPA 활용 2] 편이 어려웠다. 우리 둘 다 실무자인 것도 아니고, 이제 막 백엔드 공부를 시작하려는 학생들이었기에 더욱 이해하는 것이 어려웠고, 특히 강사님께서 "이렇게 하면 안 된다" 라고 말씀해주시는 것들이 아예 해본 적이 없기에 공감이 잘 안 되었다... 

 

그래서 급하게 잠시동안 노선을 변경하기로 했다! 

 

https://fastcampus.co.kr/dev_online_befinal

10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

 

10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online. | 패스트캠퍼스

고퀄리티 프로젝트를 찾고 계신 백엔드 개발자와 취준생 여러분을 위한 강의! 요구사항 분석, 도메인 설계, DB 구축, 기능 구현, 배포 및 성능 개선 등 75가지 기능을 구현하는 10개의 고쿼리티 프

fastcampus.co.kr

 

위 수업을 들으며 강사님의 진도에 맞춰서 코드를 짜는 계획이다. 강사님이 하시는 것처럼 똑같이 할 필요는 없고, 오히려 여기 진도는 목차 느낌, 코드 짜는 것은 김영한 강사님께 배운 방식을 최대한 빌리며 여기 강사님의 코드 및 구글링은 참고 느낌으로. 

될지는 모르겠지만 죽이 되든 밥이 되든 해봐야 아니까 일단 시작!!! 

 


셋째 주차 

이 글을 쓰고 있는 현재가 셋째 주차이다. 결과는... 어렵다ㅎㅎㅎ 

 

가장 기본인 게시판 서비스 만들어보기를 시작했다. 모든 개발자의 첫 시작은 Hello World 이지만 웹 개발자의 첫 시작은 거의 게시판이라고 들은 바 있다. 간단한 기능들을 구현하는 것도 많이 힘들구나...를 다시금 느낀다. 

 

현재까지 상황은 이렇다. 

1) 생각보다 많이 어려움

2) 코드를 공부하기 바쁜데 강사님께서는 git kraken, git flow, draw.io 등등 함께 알면 좋은 것들까지 한번에 다 알려주셔서 내용이 더욱 방대해보임

3) 빠르게 강의 한 번 돌려보고, 그냥 내가 짜야겠다는 생각

4) 계절학기(1학년 때 탱자탱자 노느라 졸업하려면 들어야하는 필교를 하나 못들어서) 가 겹쳐서 스터디원분과 하기로 한 분량을 내가 못 채우는 중... 

 

이제야 계절학기가 끝났으니 다시 달려야겠다!!! 

 

Ch02 중간까지 들었는데 지금까지 궁금한 점들 리스트와 느낀 점 정리! 이제 하나하나 해결해나가며 또 포스팅하고 링크 달아둬야겠다.

 

궁금한 점들 리스트 

  • - 깃 브랜치 뜻 
  • - 깃 플로우 
  • - 깃 크라켄 
  • - 깃, 깃허브 관련
  •  - draw.io 연동법
  • - 깃허브의 프로젝트 기능 활용 방법
  • - touch 함수의 max window linux 차이
  • - gitignore.io 관련  
  • - mysql 이란 
  • - > Could not resolve all files for configuration ':compileClasspath'. > Could not find mysql:mysql-connector-java:. 이 에러가 계속 생겼는데, mysql 연결해서 실행하는게 계속 안 되다가 gradle 을 intelliJ로 바꾸니까 되기 시작했다...?
  • 엔티티가 꼭 기본생성자가 있어야 하는 이유?
  • - manytoone 등등 매핑 복습하기 
  • - 차라리 리포지토리, 컨트롤러, 엔티티, config, 등등 모든 구조 한 번에 정리? 
    ---- 리포지토리 인터페이스로 만듦? 
    ---- ThymleafConfig...? config 파일들의 용도? 이런 것들. 
  • - Article 엔티티에서 equals object o ? 
  • hal explorer이란? 
  • - 목? 목이란 무엇일까... 
  • - API 구현? API가 뭐지? 어디까지가 API고 어디는 API가 아니지...? 
  • - QueryDsl 넣는 과정...? 이게 뭐지? 일단 얘는 뭐지? 
  • - API 구현 25분 - 리포지토리를 통해 직접 구현체를 만들지 않고 스프링 데이터 JPA를 이용해서 우리는 인터페이스만 가지고 기능을 다 사용하게끔 접근하고 있는 중 
  • - articlecontroller에는 왜 map을 쓰지? 
  • -mysql 어떻게든 연동 시켰는지 이제는 또 

ERROR 1045 (28000): Access denied for user '-root'@'localhost' (using password: YES)

이런 오류가 뜬다..? -> mysql 비밀번호가 8글자 이상이어야한다는 글을 보았다. 비밀번호 바꾸는 방법을 열심히 구글링해서 00000000으로 바꿔주고 다시 들어갔는데 또 안됨... 뭐지 했는데 flush privileges를 안 해줘서 그런거였음. 이제 되나 했는데 안됨ㅋㅋ cmd 꺼주고 다시 켜니까 됨! 

https://luna-archive.tistory.com/17

https://2vup.com/mysql-password/

 

[mySQL8 로그인 오류 해결] ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) / ERROR 106

🔒 mysql 비밀번호 재설정 ❌ 오류 mysql에서 옳은 비밀번호를 입력했음에도 불구하고 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) 오류를 마주했다. mysql 비밀번호 맞는데 되지 않

2vup.com

이번엔 BoardApplication 을 실행시켰는데 

Access denied for user 'park'@'localhost' (using password: YES)

가 발생했다... 아오!!! 

찾아보았더니( https://oneul-losnue.tistory.com/108 )mySql TCP 3306 포트 주소를 쓰는 PID 가 어쩌구저쩌구 하는 문제였다. 결론은 mySql을 여러번 설치해본 경우, 자기들끼리 겹친다는 것 같다. 이걸 해결해주면 되는거였는데,이 PID를 쓰는 mySql을 그냥 꺼버렸다. 그러니까 이제는 또 

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 

가 떴다. PID를 쓰는 mysql을 그냥 꺼버리면 안 된 것 같았다... 뭣도모르고 꺼버린듯. 

내가 해석하기로는 내가 그냥 mysql의 커넥션 자체를 끊어버린 것 같다. 즉, 다시 root 부터 만들어야하는것..? 

그래서 다시 만들었다. workbench에 들어가니 root connection 자체도 없었기에 다시 만들었다. 

근데 이번에는 또...^^ 

Access denied for user 'park'@'localhost' (using password: YES)

가 발생한다. 싹 다 지우고 다시 깔까..^^ 하는 생각도 든다. 무엇 때문이지? 

https://sectumsempra.tistory.com/80 참고?

하.... 결국 7시간만에 해결했다 ㅋㅋㅋㅋㅋ 이야~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

1) 일단 싹 다 지움. 다시 깔음^^ 다시 설치하는 과정에서도 msi 설치 파일이 제대로 안 열리는 등 여러 문제가 있었으나... 결국 어떻게 해결 해냄. 혹시 몰라서 직접 남아있는 폴더들도 (programfiles, programfiles(86), programdata ) 다 삭제함. intelliJ의 database 쪽에 있는 data sources 도 싹 다 삭제. 

2) 다시 설치. 오류 코드에 자꾸 connector j 가 보여서 저번에는 이걸 설치 안 했지만 이번에는 이거까지 싹 다 설치! 

3) 구글링을 하다보니 password를 0000 이런게 아니라 영어 대소문자, 숫자, 특수기호 까지 다 넣어서 8글자 이상으로 해야 오류가 안 난다는 글을 보고 헐레벌떡 비밀번호도 변경. 

alter user 'park'@'localhost' identified with mysql_native_password by 'Park0000!@#';

 

4) 바로 신나서 돌렸으나 보기 좋게 오류. 

5) 아! yml 파일에 비밀번호 안 바꿔놓은게 생각나서 바꾸고 눈 질끔감고 돌렸더니, 

6) 와! 다른 오류가 떴다!!! 즉, 이건 해결!!! 

 

 

 

느낀 점들 

1) 일단 당연히 코드 잘 짜야지! 하고 시작했는데 깃부터 시작하는거에서 당황 한사바리 하고 시작.

2) 깃 세상에는 깃, 깃허브만 있는 줄 알았는데 깃플로우, 깃크라켄 사용하시는거보고 당황 두사바리 하고 시작.

3) draw.io 연동은 그래도 쉬워보이고, 나도 뭔가 저렇게 멋있게 ERD 구조 그림으로 짜고 해보고 싶었어서 따라해보는데 연동 안돼서 당황 세사바리 하고 시작.

4) 이제 시작하려는데 깃허브의 프로젝트 기능을 활용하자, feature 이랑 # 을 이용하면 알아서 뭐시기가 된다 말씀하신거에서 당황 네사바리 하고 시작.

5) H2 데이터베이스 밖에 안 써본 코린이인데 mysql을 intelliJ 유료버전으로 자동연동으로 수업하시니 당황 다섯사바리 하고 시작. 

 

반대로 생각하면... 그니까 긍정적으로 생각하면...^^ 이 모든걸 한번에 다 맨땅에 헤딩할 수 있는 강의를 내가 결제한거네^^ 하면서 시작 합니다~^^ 

아자앚!