2024/07 Today I Learned
·
Today I Learned
July이번달 목표 : DrunkHouse 프로젝트 1차목표 마무리 및 PetHub 개인프로젝트 완료1일 : PetHub 쿠폰 서비스 (회원의 등급에 따른 역할 수행) 구현2일 : PetHub 모든 쿠폰 구현완료, 관리자 승급 및 강등 기능, 관리자일 경우 상품등록 구현 완료3일 : Spring Data JPA와 QueryDSL을 이용하여 게시판 기능구현  1. QueryDSL을 이용해 페이징 및 검색기능 동적쿼리로 작성하여 구현  2. get메서드와 html파일을 카테고리별로 각각 하나씩 가져서 무수히 많던 중복된 코드들을 boardType을 정의해주면서 하나의 메서드와 html파일로 묶어서 처리하게끔 개선 4일 : 개인프로젝트 게시판 crud, 댓글 crud 모두 구현완료 및 고객지원페이지 구현완료5..
팀 프로젝트 회고 [Pet Hub]
·
IT
프로젝트에서 배운 점MVC 패턴과 데이터베이스 접근 방법의 최적화  문제점프로젝트 진행 중, 트랜잭션 내 데이터 접근과 데이터베이스 조인 최적화에 관련된 두 가지 주요 문제를 겪었습니다.트랜잭션 내 데이터 접근 문제: MVC 패턴을 사용하며 MyBatis로 데이터베이스 접근을 하는 중, 서비스 레이어에 @Transactional을 적용하여 트랜잭션 내에서 작동하도록 설계했습니다. 회원가입 서비스에서, 주소(Address) 테이블이 회원(Member) 테이블을 참조하는 구조를 사용했습니다. 회원 테이블에 데이터를 먼저 삽입한 후 자동 증가된 PK 값을 주소 테이블에 삽입하려 했으나, 트랜잭션이 완료되기 전에 데이터를 조회하려다 보니 멤버의 ID를 정상적으로 얻을 수 없었습니다.데이터베이스 조인 최적화 문제..
팀 프로젝트 회고 [Smart Farm]
·
IT
프로젝트에서 배운 점로컬환경과 배포환경의 차이에 대한 고찰문제점프로젝트 배포 전, 모든 기능이 정상적으로 작동함을 확인했으나 AWS EC2에서 Docker로 빌드한 애플리케이션을 배포했을 때 두 가지 문제점이 발생했습니다.일부 페이지에 접속 시 에러 페이지가 나오며 렌더링되지 않는 현상아두이노 상태를 체크할 수 있는 apk 파일을 다운로드 페이지에서 정상적으로 다운로드할 수 없는 현상해결과정로컬 환경에서는 문제가 없었기에 배포 후에도 코드가 동일함에도 불구하고 문제가 발생한 것에 대해 이해하기 어려웠습니다. 강사님의 도움을 받으려 했으나, 즉각적인 해결이 어려워 스스로 문제를 해결하기로 했습니다.구글링을 통해 개발 환경과 배포 환경의 차이로 인해 발생할 수 있는 오류를 알게 되었습니다. 가장 직관적으로 ..
2024/06 Today I Learned
·
Today I Learned
June이번달 목표 : 김영한님 Spring + JPA 로드맵 전부 시청 후 Spring Security + JWT 수강시작12일 : jpa의 기본적인 사용법, 맵핑방법등에 대한 학습13일 : jpql, 값타입, 패치조인등 jpa 문법 학습14일 : jpa를 이용한 간단한 웹어플리케이션 엔티티구성과 비즈니스 로직 구현15일 : 김영한님의 JPA활용 1편 전강 수강완료16일 : 김영한님의 JPA활용 2편 API 개발과 성능 최적화 기본강의 수강17일 : 학원의 수료날, 어태 준비했던 프로젝트들의 마지막 점검과 수정 및 발표18일 : 김영한님의 JPA활용 2편 API 개발과 성능 최적화 수강완료19일 : spring data jpa, queryDSL의 간단한 사용법 학습20일 : Spring Data JPA..
JavaMailSender를 이용한 인증메일 발송 서비스 구현하기
·
Language/Java
학원에서 팀 프로젝트를 진행하느라 한 달 동안 블로그 포스팅은 물론, 다른 일들도 제대로 하지 못할 정도로 바빴습니다. 사실 그 바쁜 와중에도 TIL 정도는 작성할 시간이 있었을 텐데, 제 게으름도 한몫한 것 같습니다.이제 프로젝트도 막바지에 이르렀으니, 다시 마음을 다잡고 블로그와 TIL 작성을 꾸준히 하려고 합니다. 이번 한 달 동안 한층 성장한 제 모습과 앞으로 더 발전할 모습을 블로그를 통해 함께 보여드리고자 합니다.저는 이번에 두 가지 프로젝트를 진행하면서 처음 사용해 본 기술들을 중심으로 블로그에 소개하려고 합니다. 오늘은 그 중 가장 간단하게 구현한 JavaMailSender를 이용해 인증 메일을 발송하는 시스템에 대해 소개하려고 합니다.로직 소개이 로직은 사용자가 회원가입이나 비밀번호를 잊..
Git 팀프로젝트 시작하기
·
Framework&Tools/GIT
깃으로 팀프로젝트 시작하기스크럼마스터 초기 세팅레포지토리 생성팀 프로젝트를 시작하기 위해 가장 먼저 해야 할 일은 GitHub에서 새로운 레포지토리를 만드는 것입니다. 레포지토리를 생성하고 나면 팀원들을 초대하여 협업을 시작할 수 있습니다.그룹구성원 초대(Add people)레포지토리가 생성되면 'Settings'로 이동하여 'Manage access'에서 팀원들을 초대합니다. 이메일 주소나 GitHub 사용자 이름을 입력하여 초대장을 보냅니다.로컬에서 프로젝트 환경세팅(스프링부트 세팅)로컬 개발 환경에서 프로젝트를 설정합니다. 이 예시에서는 스프링부트를 사용합니다. 필요한 종속성을 추가하고 프로젝트를 초기화합니다.깃허브와 연동로컬 환경에서 작업한 프로젝트를 GitHub 레포지토리와 연동합니다.git i..
2024/05 Today I Learned
·
Today I Learned
May이번달 목표 : 김영한님 Spring로드맵 강의 시청하고 개인프로젝트 완성까지는 아니더라도 시작은 해보기 1일 : Rest Api 작성하여 json형태로 반환하는 것 연습, spring boot 에서의 component, componentscan등의 학습2일 : CRUD평가 및 http프로토콜 기초학습 시작3일 : CRUD REST API 작성, json형식으로 반환하는 연습7일 : CRUD REST API 작성, json형식으로 반환하는 연습 및 마무리8일 : 국비지원 강의에서의 스프링부트 시작, 스프링부트에서만 사용할 수 있는 여러가지 기능들을 체험 및 사용, 이후 프로젝트에서 aws를 이용하여 서버구축 및 데이터베이스를 이용할 예정이기에 해당 강의영상 시청9일 : 스프링부트 Autowired의..
Filter, Interceptor, AOP - 차이점과 적절한 사용 상황
·
Framework&Tools/Spring
오늘 학원에서 수업중 AOP라는 내용에 대해 공부하게 되었다. Spring에서 CRUD게시판을 만드는데 있어서 로그인과 회원정보수정, 회원가입 등에서 비밀번호를 암호화(SHA)시켜서 데이터베이스에 저장시키는 과정이 공통적으로 들어가게 되었다. 예를 들면 아래와 같은 코드이다. String hashPw = HashPw.getHash(user.getUserpw()); user.setUserpw(hashPw); 이런식의 공통적으로 들어가게 되는 코드를 줄이고자 AOP라는 것을 사용한다고 하였다. 자, 여기서 우선 AOP란 무엇인가? - 나도 잘모르니 같이 공부하는 셈치고 AI에게 물어보자. AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) AOP(Aspect-Oriented P..