블로그
전체 32024. 03. 10.
0
[인프런 워밍업 클럽] 3주차 발자국
강의수강10일객체지향적 설계를 위한 연관관계에 대해서 다음과 같은 어노테이션을 배웠습니다.@ManyToOne내가 다수고 네가 1이라는 의미이다!도메인간의 관계를 맺기 위한 어노테이션이다.@OneToMany내가 1이고, 네가 다수이다!(mappedBy = "domain")관계의 주도권이 없는 쪽에다가 넣어야 한다!연관관계를 통해 코드를 효과적으로 작성 할 수 있다는 것 배웠습니다.!하지만 조금 복잡하고 어렵다보니 다시 재학습이 필요할 거같습니다!11일profile을 통해 어떨때는 MySql을 사용하고 어떨때는 H2DB를 사용하는 방법에 대해 배웠습니다.상황에 따라 여러가지 설정을 하는 방법은 매우 유용한것 같습니다.git은 버전관리툴, github는 git으로 관리되는 프로젝트 저장소!여러 git명령어를 간단하게 배웠습니다.아마 실무를 생각한다면 더욱 깊게 배워야 겠다고 생각을 하게 되었습니다.AWS 가입과 EC2생성을 배웠습니다.12일간단한 리룩스 명령어에 대해 배웠습니다.이 역시 더욱 깊이있게 배움이 필요하다고 생각합니다.EC2에 JDK, MySql을 설치하였습니다.'git에 올라가있는 프로젝트를 리눅스에서 바로 받아올수 있다는게 신기했습니다.스프링부트는 톰캣이 내장되어있어서 배포가 너무 편리합니다예전에 프로젝트할때는 Spring만 사용하여 Tomcat을 설치하는데 설정하는 것이 많이 어려웠습니다.foreground실행하는게 보이는 개념background실행하는게 보이지않는개념보이지 않지만 프로그램은 돌아가고있다!13일build.gradle는 프로젝트를 빌드하고 의존성 관리를 위한 파일로 groovy언어를 이용해 작성한 것이다!gradle에 대해 간단하게나마 개념을 잡을수 있었습니다.Spring과 Spring Boot의 역사와 등장 이유에 대해 알게 되었습니다.인간은 점점 기술을 발전시키면서 편의성을 높이는 것은 본능이지 않을까 라는 생각을 하였습니다.특히 Boot는 간편한 설정, 의존성 관리, 확장성등 강력한 기능을 제공하여 필수적이지 않나 생각합니다.Boot 버전업 application 등 간단한 개념을 알게 되었습니다.저는 기반 실무 스킬이 많이 부족하다고 생각합니다. 앞으로 git이나 리눅스에 대해 깊이있게 공부를 할 예정입니다.14일학원을 다닐때에는 프로젝트에 MyBatis만 이용하였습니다. JDBC템플릿보다 편의성과 기능성에 있어서 많이 놀랐는데 이번 강의를 통해 JPA에 대해 알게 되었고 JPA만의 장점이 많이 놀라웠습니다. 현재는 MyBatis가 많이 저물어 가고있는게 추세이기에 앞으로도 JPA에 대해 깊이있는 공부를 할 예정입니다.[미니 프로젝트]현재 미니프로젝트는 3단계까지 완성하였습니다.앞으로 4단계 까지 완성하고 배포 및 CI/CD를 공부하여 배포 자동화를 할 예정입니다.https://wise-elderberry-605.notion.site/0-b20f1518e96d45eda3b1775dfbc56acb정리우연찮은 기회로 인프런 워밍업클럽에서 3주간 함께 하게 되었습니다. 처음에는 당연히 '우수러너가 되야지' 라는 마음가짐이 있었지만 역시 뛰어난 실력자분들이 있기에 '나는 힘들겠구나' 라는 생각을 하였습니다.많이 아쉽지만 뛰어난분들의 코드를 보면서 오히려 더 많이 배우는 자리이도 하였습니다. 성격상 넉살이 없기에 소통을 하는게 많이 어려웠지만 별도의 커뮤니티가 있어서 다른분들이 질문하신것에서 많이 배우는 시간이기도 하였습니다.3주간 고생하신 강사님, 셰리님, 그리고 러너분들 앞으로도 더욱 열심히 공부해서 훌륭한 개발자가 되길 바랍니다. 감사합니다.
웹 개발
・
워밍업클럽
・
인프런워밍업
・
워밍업클럽study
2024. 03. 02.
0
[인프런 워밍업 클럽]2주차 발자국
6일차@RestControllerAPI진입 지점을 만들어준다.해당 클래스를 스프링 빈으로 등록시킨다.new 해줄 필요가 없다(스프링 빈이니깐)@Repository, @Service 이 어노테이션도 스프링 빈으로 등록시켜준다.@Configuration + @Bean 사용방법도 있다.외부라이브러리나 프레임워크에 만들어져 있는 클래스를 빈으로 등록할때 많이 사용하는 조합니다! @Qualifier와 @Primary 어노테이션은 특정 빈을 선택할 수 있게 해준다.우선 순위는 @Qualifiler이 더 높다!7일차JPAJava Persistence API의 약자이다 객체와 관계형 데이터베이스의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java진영의 규칙이다.테이블에 대응되는 Entity Class를 만들어야한다.findByName method함수 이름만 작성하면 알아서 SQL이 만들어진다.find : 1개의 데이터만 가져온다.By : 뒤에 붙는 필드 이름으로 WHERE절이 작성된다.select * from user where name = ? 의 SQL문이 완성된다.By앞 구절find : 반환 타입은 객체, OptionalfindAll : 쿼리 결과가 N개인 경우 반환 타입은 Listexists : 쿼리 결과가 존재하는지 확인 반환 booleancount : 쿼리 결과 개수를 센다. 반환 longBy뒷 구절GreaterThan : 초과 GreaterThanEqual : 이상LessThan : 미만 LessThanEqual : 이하 Between : 사이에 StartsWith : ~로 시작하는 EndsWith : ~로 끝나는8일차@Transactional로직이 정상적으로 작동하면 DB에 적용된다.로직에 문제가 발생하면 @Transactional으로 rollback된다.영속성 컨텍스트가 생긴다.반환받은 객체에 변경이 생기면 자동으로 save method를 실행하여 DB에 적용시킨다.쓰기 지연능력이 생긴다.commit이 되는 시점에 SQL을 모아서 실행시킨다.1차캐싱능력이 생긴다.같은 쿼리가 실행된다면 최초1회 쿼리만 실행된다.9일차책 등록기능, 대출기능, 반납기능 구현대출기능과 반납기능의 HTTP Body스펙이 동일해도 새로운 DTO를 만드는 것이 좋다!이후에 대출기능이나 반납기능에 기능추가가 생길경우를 대비하여 만드는 것이 좋다. 2주차 후기 JPA를 배우면서 놀라웠다. 메소드명으로 SQL쿼리를 만들다니?!?!기본적인 CRUD를 만들때는 생산성이 향상되겠구나 싶었다.하지만 복잡한 SQL을 만들려면은 더 깊게 공부해야된다고 느겼다.과제중 JPA로 Group by를 사용하려면 어려운 방법은 사용해야했는데 너무 어려워서 포기를 해버렸다.기회가 된다면 JPA를 조금더 심층적으로 공부를 해야겠다.@Transactional 기능 또한 놀라웠다. 영속성 컨텍스트로 변경사항이 있다면 자동으로 DB에 반영해주는게 좋은 기능 같다.
백엔드
・
인프런워밍업클럽
・
워밍업클럽
2024. 02. 25.
0
[인프런 워밍업 클럽] 1주차 발자국
신청이유국비학원 수료이후 아직 취업을 못하고 있어서 뭐라도 해야겠다는 심정으로 참여하였다.학원에서는 aws배포를 배웠지만 마지막 프로젝트에서 실제 배포하는데 실패하여서 제대로된 배포방법을 알지 못해서 이번 기회에 aws배포를 배우고 간단한 JPA와 MySQL을 사용해보면서 기술 스택을 쌓는게 좋을 거같아서 참여했습니다. 강의수강1일어노테이션과 API에 대해 스스로 공부를 해볼 수 있었습니다. 어노테이션에 알수록 깊이 있는 부분이라 많이 어려웠습니다.하지만 향후 좋은 개발자가 되기 위해서는 어노테이션 부분을 공부를 해야겠다는 생각을 하게 되었습니다.과제 : 어노테이션을 쓰는 이유와 나만의 어노테이션 만들기컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공나만의 어노테이션 만들기는 밑의 1일차 링크를 참고해주세요2일간단한 API를 설계하여 서버 클라우드 통신을 하는 방법에 대해 배웠습니다.서버 클라우드 통신에 대해 깊이 있게 공부하고 싶으면 김영환님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 추천합니다https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard과제 : 두 수를 입력하면, 다음과 같은 API를 만들어 보자!간단한 API를 설계를 하였습니다. 서버 클라이언트 통신의 기본적인 방법을 사용하였습니다.처음에는 Controller에서 모든 로직을 다 구현하였는데 DTO에서 간단한 연산을 구현하여 문제를 해결했습니다.3일익명클래스와 람다식에 대해 배웠습니다.익명클래스와 람다식은 예전에 프로젝트를 진행했을 때 실제로 적용한적은 없습니다. 뭔가 이해는 되는데 실전에서 어떤식으로 적용을 하는게 좋을지에 대해 더 어렵고 복잡하게 생각을 하여서 입니다.하지만 실력있는 개발자가 되기위해서는 적절하게 적용을 해야하는 기술이라 생각하여 향후에 깊이 있게 공부해야하는 부분이라고 생각합니다.과제 : 람다식이 왜 등장했을까, 람다식과 익명 클래스의 관계람다식의 등장이유 중 큰 부분은 코드의 간결화 입니다.람다식은 간결하고 함수형 프로그래밍 스타일을 지원한다.익명 클래스는 더 많은 유연성을 제공하지만 더 많은 코드를 필요로 한다.4일API를 설계하여 다양한 method를 통해 헤더별로 기능을 구현하였습니다.국비학원에서는 GET, POST만 이용하였는데 PUT, DELETE 등 다양한 method head가 있다는 걸 알게 되었습니다.각 method별로 API기능을 구현을 하는게 클린코드 작성에 있어서 유리하다고 생각합니다.과제 : 다양한 HTTP method를 이용하여 과일가계 API개발똑같은 HTTP path라도 method에 따라 다른 로직을 구현할 수 있다는 것을 알게 되었습니다.API가 반환할 떄는 자동으로 JSON형식으로 반환하다는 걸 알게 되었습니다.5일MVC패턴에 대해 개념적으로 배웠습니다.기존에 작성한 API를 Controller, Service, Repository 로 리페토링을 진행하였습니다.과제 : 클린코드로 리페토링주사위를 구현하여 주사위 숫자별로 몇번이 나왔는지를 구현하는 기능입니다.저는 주사위의 각면과 나온 횟수를 하나의 객체로 만들어서 기능을 구현하였습니다.학원에서 배울 때는 1개의 값을 이용한다면 자료형으로 받고 2개 이상의 값을 이용한다면 VO, DTO같은 객체를 이용하는 것을 권장하여서 객체로 만들었습니다.메소드 이름을 정하는데 많은 고민을 하였습니다. 메소드 이름을 직관적으로 만들는 것이 클린 코드를 실현하기 때문입니다.1주차 후기완주 러너가 목표여서 매일 수강하고 과제를 진행하였습니다. 혼자서 공부하였다면 다소 부진했을 수도 있는데 워밍업 클럽은 많은 동기부여를 해주는 것 같습니다. 앞으로 2주차 3주차도 계속 노력하여서 완주러너가 되는게 목표입니다. 1일 : https://wise-elderberry-605.notion.site/0-BE-1-f1115323015e4e959027811fcd2511ed?pvs=742일 : https://wise-elderberry-605.notion.site/0-BE-2-774f2a49f2f04867969e14ffd6f5b91c?pvs=743일 : https://wise-elderberry-605.notion.site/0-BE-3-03d2bbfcacff4141bec4b39e6235759f4일 : https://wise-elderberry-605.notion.site/0-BE-4-61db7de4c97b4e69895c026c61b32930?pvs=745일 : https://wise-elderberry-605.notion.site/0-BE-5-c9227cff9e9b45f3a196c93f9e8904f0
백엔드
・
인프런워밍업클럽
・
워밍업클럽