2023/08 12

Spring Data JPA와 Hibernate란?

Spring Data JPA와 Hibernate는 모두 자바에서 데이터베이스를 다루는 기술이지만, 서로 다른 개념과 목적을 가지고 있습니다. Hibernate: Hibernate는 자바 기반의 ORM (Object-Relational Mapping) 프레임워크입니다. ORM은 객체와 관계형 데이터베이스 간의 매핑을 처리하는 기술이며, Hibernate는 이러한 기능을 제공하는 대표적인 프레임워크 중 하나입니다. Hibernate를 사용하면 자바 객체와 데이터베이스 테이블 간의 매핑을 설정하고, 객체 지향적인 방식으로 데이터를 다룰 수 있습니다. Hibernate는 데이터베이스 연동 작업을 추상화하고 개발자가 직접 SQL을 작성하지 않아도 되도록 도와줍니다. Spring Data JPA: 스프링 Data ..

백엔드 기술면접 예상 질문

기본 지식과 기술적 이해: 자바와 객체 지향 프로그래밍에 대한 기본 개념을 설명해주세요. 더보기 객체 지향 프로그래밍(Object-Oriented Programming, OOP): 객체 지향 프로그래밍은 소프트웨어를 현실 세계의 개체(Object)들로 모델링하여 프로그래밍하는 패러다임입니다. OOP는 다음과 같은 주요 개념을 포함하고 있습니다: 클래스(Class)와 객체(Object): 클래스는 데이터와 메서드의 집합으로, 객체를 정의하는 틀이며 사용자 정의 데이터 타입입니다. 객체는 클래스의 인스턴스로, 클래스를 기반으로 실제로 생성되는 것을 말합니다. 캡슐화(Encapsulation): 데이터와 해당 데이터를 다루는 메서드들을 하나의 단위로 묶는 것을 말합니다. 캡슐화를 통해 데이터의 접근을 제어하고..

ETC 2023.08.27

인증 예외 헨들링, AuthenticationEntryPoint

AuthenticationEntryPoint는 Spring Security에서 인증(Authentication)에 실패한 사용자가 보호된 리소스에 접근하려고 할 때 어떻게 처리할지를 정의하는 인터페이스입니다. 이는 주로 인증되지 않은 사용자가 보호된 엔드포인트에 접근하려고 할 때 발생하는 상황에 해당합니다. Spring Security는 보호된 리소스에 접근하려는 모든 요청을 필터링하고, 인증되지 않은 경우에는 AuthenticationEntryPoint를 호출합니다. 이 인터페이스를 구현하는 클래스를 통해 클라이언트에게 어떤 응답을 보낼지를 결정할 수 있습니다. 인증되지 않은 사용자 처리: 사용자가 로그인되지 않은 상태에서 보호된 리소스에 접근하려고 할 때 어떤 응답을 생성할지를 정의합니다. 이 응답은..

@RestControllerAdvice

Spring Framework에서 제공하는 어노테이션 중 하나로, 전역적으로 컨트롤러(Controller)들에 대한 예외 처리와 응답 처리를 담당하는 클래스를 정의할 때 사용됩니다. 이 어노테이션을 사용하여 만든 클래스는 일종의 예외 처리와 응답 처리를 위한 클래스로 동작하며, 어플리케이션의 여러 컨트롤러에서 발생할 수 있는 예외 상황에 대한 일관된 처리를 제공하는 데 도움을 줍니다. 전역 예외 처리(Global Exception Handling): @RestControllerAdvice로 정의된 클래스 내에서 특정 예외 타입에 대한 처리 방법을 지정할 수 있습니다. 이렇게 정의한 예외 처리 로직은 어플리케이션의 모든 컨트롤러에서 발생하는 예외에 적용됩니다. 응답 형식 표준화(Standardized Re..

Spring Boot 2023.08.25

@JsonInclude

@JsonInclude(JsonInclude.Include.NON_NULL)은 Jackson 라이브러리에서 사용되는 어노테이션입니다. Jackson은 자바 객체와 JSON 데이터 간의 변환을 처리하는 라이브러리로, 주로 REST API에서 객체를 JSON으로 변환하거나 JSON을 객체로 변환할 때 사용됩니다. @JsonInclude 어노테이션은 객체를 JSON으로 변환할 때 특정 조건에 따라 어떤 필드를 포함시킬지 결정하는 역할을 합니다. JsonInclude.Include 열거형은 다양한 옵션을 제공하며, 그 중 NON_NULL 옵션은 해당 필드의 값이 null이 아닌 경우에만 JSON에 포함시키도록 지정합니다. @JsonInclude(JsonInclude.Include.NON_NULL) public ..

Spring Boot 2023.08.25

[Spring Boot] Unsatisfied dependency expressed through field '..'; 단위 테스트시 Bean 생성에러

테스트 중 아래 Bean을 생성하지못한다는 에러가 발생했다. @Autowired PasswordEncoder passwordEncoder; @DataJpaTest class UsersRepositoryTest { private String name = "test"; private String email = "testEmail"; private String password = "testpwd"; private Role role = Role.USER; private Provider provider = Provider.LOCAL; private String providerId = "testproviderid"; @Autowired UserRepository userRepository; @Autowired Pa..

Trouble Shooting 2023.08.14

[Linux] Web server failed to start. Port 8080 was already in use.

분명히, IDE에서 Spring Boot 서버를 종료시켰는데도 에러가 발생하면서 애플리케이션이 실행되지않는 경우가 생겼습니다. [해결방법] 실행중인 PID를 확인한후 해당 서비스를 종료시키면됩니다 mac 터미널 $ lsof -i tcp:8080 //실행중인 pid 목록 보기 $ kill -9 20489 // kill -9 pid PID번호 명령어 입력 window 명령 프롬포트(CMD)에서 netstat -ano -> taskkill /f /pid PID번호 명령어 입력 $ netstat -ano //pid 목록확인 $ taskkill /f /pid 23489 // taskkill /f /pid PID번호

Trouble Shooting 2023.08.13

[Git] Authentication failed for ‘https://github’

어느날 소스트리에서 내 Git 에 접근하는데 인증이 불가하다고 하네요.. 원인은 Id/Password 방법이 아닌 token 을 이용하여 로그인을 하기 때문에 발생한것입니다. [해결방법] 1. 내 Git 에서 Token을 발급해주어야합니다. 우측 상단의 동그라미모양의 내 프로필을 클릭해줍시다 2. Setting에 진입후에 Developer Setting → Personal access tokens → expiration 기간설정후, repo 선택 → generation 한번만 보여주기 때문에 복사해서 잘저장해두어야합니다 마지막으로 - 내 로컬에서 git등록! git config --global user.name ‘아이디’ git config --global user.password ‘복사한 토큰’ 인줄알..

Trouble Shooting 2023.08.13