[백엔드] Blog - 실행 오류 정리 (application.yml, SDK, test)
·
백엔드/Java + Spring
프로젝트를 git clone 하고 실행시킬 때 IntelliJ IDEA에서 발생했던 오류를 정리했습니다. 애플리케이션 실행 오류오류 내용 아래로 스크롤하다 보면 다음과 같은 오류 나옴 해결 실행 버튼 옆의 구성 편집 누르기  환경 변수 옵션 추가 및 설정application.yml 파일에 존재하는 다음 내용 환경 변수에 추가 (또는 yml 파일을 직접 수정){DATASOURCE_URL}{DATASOURCE_USERNAME}{DATASOURCE_PASSWORD}{JWT_SECRET_KEY}{JWT_ACCESS_TOKEN_TIME}{JWT_REFRESH_TOKEN_TIME} 오류 내용 다음과 같은 오류 또는 기타 오류 발생 시 해결 프로젝트 구조에서 적절한 SDK 선택 (Java 21 버전 중 선택) 오류 ..
[백엔드] 회원탈퇴(Soft delete) 및 회원복구
·
백엔드/Java + Spring
Soft delete란?데이터를 완전히 삭제하지 않고 논리적으로 삭제되었음을 나타내는 필드를 두어 데이터를 비활성화하는 방식이다.다음과 같은 상황에서 사용된다.회원 삭제를 호출했지만 회원 정보를 가지고 있어야 하는 경우회원 탈퇴 복구 기능이 필요한 경우“회원 탈퇴 후, 30일 뒤 영구삭제” 이런 상황에서 사용된다.  이전에 진행했던 프로젝트에서는 isDeleted(삭제여부)와 deletedAt(삭제시간) 필드를 두었다. 로직 회원 삭제 API가 호출되면 Spring Security가 요청에 포함되어 있는 JWT 토큰을 통해 유저를 인증하고 인증된 유저의 정보(Developer 객체)를 @AuthUser를 통해 파라미터로 주입한다. 메서드 내에서는 주입된 developer 객체의 id를 가져와 Servic..
[벡엔드] 카테고리 Java Enum 활용
·
백엔드/Java + Spring
카테고리를 테이블로 관리했을 때의 문제점 카테고리의 클래스를 구현하는 도중 문득 카테고리 각각을 테이블로 만드는 것이 상당히 비효율적이라고 느껴졌습니다. 그러한 이유는 다음과 같습니다.  카테고리 변경이 거의 일어나지 않음본 프로젝트 특성상, 한 번 정의된 카테고리 추가/삭제가 거의 발생하지 않는다. 따라서 카테고리 CURD는 프로젝트 초기 이후 거의 사용되지 않는다.관계 관리의 복잡성 증가Developer : DevLanguage의 관계는 다대다 관계이다. 연관관계 메서드 등을 구현하기 위해 코드가 길어지며, 운영 단계에서 중간엔티티가 증가한다성능 이슈테이블을 Join & Group by 하며 성능 부하가 발생한다. Java Enum 도입이러한 비효율을 해결하기 위해 다음 기술 블로그를 레퍼런스하여 J..
[면접 후기] 첫 번째 백엔드 면접 후기 및 회고
·
백엔드/백엔드
보호되어 있는 글입니다.
[Java Spring] DB에서 조건 검색 하는 방법 (Specification, Predicate)
·
백엔드/Java + Spring
오늘은 스프링JPA에서 DB 조건 검색을 하기 위해 제가 사용했던 코드들을 리뷰해보겠습니다. Repository@Repositorypublic interface SubjectRepository extends JpaRepository, JpaSpecificationExecutor {} 리포지토리는 JpaRepository 사용Specification을 사용하기 위해 JpaSpecificationExecutor를 extends 해주시면 됩니다.  Specification, Dtopublic class SubjectSpecification { public static Specification subjectFilter(GetSubjectListRequestDto requestDto) { ret..
[트러블 슈팅] 엔티티 이름을 User로 지으면 안되는 이유와 해결 방법 (H2 버전 2.x.x)
·
백엔드/백엔드
코드@Entity@Getter @Setterpublic class User {    @Id @GeneratedValue    @Column(name = "user_id")    private Long userId;    @Column(name = "user_name")    private String userName;} 발생한 오류Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000a    create table [*]user (\000a        user_id bigint not null,\000a        user_name varchar(255),\000a        primary key ..