개발 93

본캠프 : Git - GitHub 저장소 재설정

1. 기존 원격 저장소 확인먼저 현재 프로젝트에 연결된 원격 저장소 목록을 확인git remote -v 출력 결과가 다음과 같다면 원격 저장소가 이미 설정됨origin  https://github.com/기존-레포지토리-주소 (fetch)origin  https://github.com/기존-레포지토리-주소 (push) 2. 기존 원격 저장소 제거 후 새로 추가이미 존재하는 원격 저장소를 삭제하고 다시 추가하는 방법git remote remove origingit remote add origin https://github.com/변경-레포지토리-주소 현재 프로젝트에 연결된 원격 저장소 목록을 재확인git remote -v

개발/부트캠프 2025.02.21

본캠프 : 중복 코드 메서드로 만들기

1. findById와 updateById에서 중복으로 사용하는 코드가 있다.User findUser = userRepository.findById(id).orElseThrow( () -> new ResponseStatusException(HttpStatus.NOT_FOUND, "해당 ID가 존재하지 않습니다.")); 2. 중복되는 코드를 드래그하면 Method Extract이 가능하다. 3. 자동으로 getUser 메서드를 만든 후 같은 코드가 작성된 로직에도 Replace한다. 4. findById와 updateById에 getUser 메서드가 적용되었다. → 2번 이상 같은 코드가 작성되면 메서드화 시키는 것이 좋다. 그럼 수정 시에 해당 메서드만 변경하면 된다. 끝!

개발/부트캠프 2025.02.20

본캠프 : 뉴스피드 제작(팀 프로젝트)_소프트 삭제(Soft Delete)

[ User 소프트 삭제 방법 ]1. User Entity  설정필드 추가       private LocalDateTime deletedAt클래스 전체 적용       @SQLDelete(sql = "UPDATE users SET deleted_at = now() WHERE id = ?")       @SQLRestriction("deleted_at IS NULL")  2. 설명1) @SQLDelete란?JPA에서 @Entity가 삭제될 때 실행할 SQL을 정의하는 어노테이션입니다.기본적으로 delete from users where id = ?로 실행되는 DELETE 명령어를 사용자 정의 SQL로 변경할 수 있습니다.@SQLDelete를 활용하면 데이터를 실제로 삭제하지 않고, deleted_at 컬..

개발/부트캠프 2025.02.19

본캠프 : Spring Data JPA 페이지네이션(Pagination)

[ Spring Data JPA 페이지네이션(Pagination) ]Spring Data JPA에서는 Pageable과 Page 인터페이스를 사용하여 데이터를 페이지 단위로 조회할 수 있어요.이를 통해 대량의 데이터를 한 번에 불러오는 것이 아니라, 필요한 만큼 가져올 수 있도록 해줍니다. ✅ 페이지네이션 핵심 개념📌 기본 개념Pageable : 페이지 정보를 담는 인터페이스요청한 페이지 번호(page), 페이지 크기(size), 정렬 방식(sort)을 포함PageRequest.of(page, size)를 사용하여 객체 생성Page : 페이지 결과를 담는 객체getContent() : 현재 페이지의 데이터 리스트getTotalPages() : 전체 페이지 수getTotalElements() : 전체 데..

개발/부트캠프 2025.02.17

본캠프 : 뉴스피드 제작(팀 프로젝트)_비밀번호 수정 API

비밀번호 수정 API기존프로필 수정 서비스 로직에서 유저 확인을 위한 비밀번호 검증 및 수정이 같이 구현됨변경비밀번호 수정 API 추가함 UserPasswordUpdateRequestDto 설정필드(현재 비밀번호와 새 비밀번호)private String currentPasswordprivate String newPassword User Entity 설정필드비밀번호 변경을 위해 User Entity에 currentPassword와 newPassword 필드를 추가할 필요가 없음User Entity에 추가하면 이 값이 데이터베이스에 저장되므로 불필요한 데이터가 남게 됨비밀번호 변경 요청은 일회성데이터이므로, DTO에서만 관리함메서드(새 비밀번호 저장)public void updatePassword(Strin..

개발/부트캠프 2025.02.14

본캠프 : 개인 과제(일정 관리 앱-Develop 만들기) 트러블 슈팅

1. 개요일정 관리 앱-Develop 만들기 과제를 진행하며, 겪은 이슈에 대한 정리 및 회고 2. 트러블 슈팅(1) LoginFilter requestURI ● 배경LoginFilter 구현 후 유저와 일정 CRUD 기능 테스트에서 401 에러 발생 ● 발단LoginFilter 클래스에서 WHIITE LIST에 과제 요구사항("회원가입, 로그인 요청은 인증 처리에서 제외합니다.")을 적용함private static final String[] WHITE_LIST = {"/users/signup", "/users/login"}; ● 전개WHIITE LIST의 URI는 LoginFilter를 거치지 않고 다음 필터 또는 컨트롤러로 연결됨. 회원가입(/users/signup)과 로그인(/users/login)..

개발/부트캠프 2025.02.13

본캠프 : Spring 숙련_Bean Validation

[ Bean Validation 적용 방법 ]-Bean Validation은 입력 값(데이터)의 유효성을 검사하는 기능을 제공하는 표준 Java API입니다.-Spring Boot에서는 javax.validation 패키지를 사용하여 자동 검증을 쉽게 적용할 수 있습니다.-핵심 개념:@Valid 또는 @Validated를 사용하여 컨트롤러에서 검증 수행@NotNull, @Size, @Pattern 등의 유효성 검증 어노테이션 적용검증 실패 시 예외 처리 (MethodArgumentNotValidException)1. Bean Validation 의존성 추가 2. 요청 DTO 클래스에 검증 어노테이션 적용@NotNull@NotEmpty@NotBlank@Email@Size(min, max)@Pattern(r..

개발/부트캠프 2025.02.12

본캠프 : 특강

JPASpring Data JPA의 메서드 명명 규칙에 따라 findByActiveTrue()라는 메서드를 작성하면, 내부적으로 "SELECT * FROM users WHERE active = true" 쿼리가 자동 생성JPA의 엔티티 매핑(Entity Mapping) 기능 덕분에, User 엔티티와 users 테이블의 컬럼이 자동으로 매핑JPA는 내부적으로 Reflection을 사용하여 User 클래스의 필드에 ResultSet 값을 자동으로 채워줌파라미터 바인딩이 자동으로 처리됨JPA의 메서드 네이밍 전략에 따라, findByRole(String role)을 작성하면 "SELECT * FROM users WHERE role = ?" 쿼리를 자동 생성하고, ? 자리에 role 값을 자동으로 채움자동 트..

개발/부트캠프 2025.02.11

본캠프 : 특강_협업 관점에서의 Git

팀장 철수와 팀원 영희 (파란색은 팀장, 분홍색은 팀원) 1. Organization 생성New Organization 클릭Create a free organization 클릭모두 입력/체크 후 Next 클릭일단 Complete Setup 클릭 (추후 초대 권장)People - Invite Member 클릭팀원의 email address을 검색하여 초대 (팀원은 이메일을 확인하여 수락)Settings - Member privileges - Base permissions - Write 로 수정2. Repository 생성Repositories - Create a new repository외부에게 공개가 되어야 하므로 반드시 ‘Public’으로 생성3. IntelliJ Project 생성 4. GitHub ..

개발/부트캠프 2025.02.10