본문 바로가기

Back-end139

Spring Security Filter 작성 이유 회사 프로젝트에는 Auth 모듈이 개별적으로 존재한다. 해당 모듈은 주로 Auth 기능을 담당하는데, JWT 토큰 관련 설정도 존재한다. 앱과 웹 환경이 존재하는데, 둘의 JWT Provider가 다르다. 웹 쪽에서 버그가 발견되었는데, 한쪽 로그인을 해놓고, 다시 로그인을 하면 헤더에 토큰이 존재하는 상태로 요청이 간다. 즉, 중복 로그인 처리 문제인데, 시나리오 상 토큰을 실은 상태로 로그인을 시도하면, 로그인 된 것으로 간주해야 한다. 하지만 토큰 시그니처가 맞지 않다는 에러가 발생 → 클라이언트에서도 해당 버그를 인지하지 못한 상태여서 에러 처리가 안되어 있어 다시 로그인 시도 위 과정을 반복하며 무한 로그인 시도가 되는 버그가 있었다. 이로 인해 Auth 모듈에 요청이 비정상적으로 많.. 2024. 1. 1.
코틀린 - 기본 문법 Foundation fun main() { println("Hello, World") } fun 은 함수를 선언하는데 사용된다. fun main()는 프로그램이 시작되는 곳 함수의 본문은 중괄호 안에 작성 { } println(), print() 는 인수를 표준 출력으로 인쇄 Variable 코틀린의 변수는 2가지 종류가 존재 읽기 전용 변수 : val 변경 가능한 변수 : var main() 프로그램 시작 시 함수 외부에서 변수를 선언 가능 → top level variable var 변수는 선언 후 다시 할당 가능 기본적으로 val 변수를 선언, var 변수는 필요한 경우 선언 String templates String Templates를 사용해 변수의 내용을 표준 출력으로 사용 가능 Template.. 2023. 10. 25.
JPA Entity 기본 생성자 JPA는 인수없는 기본 생성자가 존재해야 한다. JPA에서는 public 또는 protected로 정의해야 한다. JPA는 DB 값을 객체 필드에 주입할 때 기본 생성자로 객체를 생성하고, Reflection을 사용하여 값을 매핑한다. 만약 private 생성자를 만들게 되면 지연 로딩으로 인해 생성된 프록시 객체를 사용하는데 제약이 생긴다. 그래서 Entity에는 public, protected scope를 가진 기본 생성자가 필요하다. 2023. 9. 29.
기본 키 할당 전략 기본 키 할당 전략 JPA가 제공하는 DB 기본 키 할당 전략은 직접 할당 방식, 자동 생성 방식 두 가지가 존재한다. 직접 할당 방식은 기본 키를 애플리케이션에서 직접 할당하는 방식으로 @Id 어노테이션만 붙이고, id 값을 직접 할당하면 된다. 자동 생성 방식은 데이터베이스에서 제공하는 대리키를 사용하는 방식이다. 총 3가지 방식이 존재한다. Identity Sequence Table Identity 전략 Identity 전략은 기본 키 관리를 DB에 위임한다. 엔티티가 영속 상태가 되려면 식별자가 반드시 필요하다. Identity 전략은 엔티티를 데이터베이스에 저장해야 식별자를 얻을 수 있다. 즉, 저장하는 순간 Insert SQL이 DB에 전달되어 쓰기 지연이 동작하지 않는다. 또한 기본 키는 n.. 2023. 9. 29.
Wrapper Type vs Primitive Type In JPA Wrapper Type vs Primitive Type In JPA Primitive Type 자바의 기본 자료형으로 int, long, boolean, char, short, byte, double, float 자료형이 존재한다. 특징으로 기본값으로 0이 들어가게 된다. 기본 데이터 타입으로 크기가 고정되어 있다. Wrapper Type 기본 자료형을 객체로 다루기 위한 클래스이다. 즉, 객체로 래핑하여, 객체 지향 적인 기능을 활용 할 수 있다. JPA Entity Field Type @Entity public class Member{ @Id Long id; } 여기서 Long 타입과 long 타입으로 선언하는 방법이 있다. Long 타입을 선언해도, long 타입을 선언해도 동일하게 동작한다. 하지.. 2023. 9. 29.
JPA JPA란? Java Persistence API의 약어로, 자바 ORM 기술에 대한 API 표준 명세이다. 쉽게 이야기해서 인터페이스를 모아둔 것이다. JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 하는데, 기본값으로 하이버네이트 프레임워크를 사용한다. JPA를 쓰는 이유 JPA를 사용하면 객체지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치를 해결 할 수 있다. 또한, JPA를 통해 데이터베이스와의 상호작용을 편리하게 만들 수 있다. 개발자는 SQL 쿼리를 직접 작성하는 번거로움을 줄이고, POJO 기반 모델을 적용하여 객체 지향적인 코드를 작성할 수 있다. JPA 단점 복잡한 SQL은 생성하지 못할 때도 있고, 직접 SQL을 호출하는 것보다 성능이 낮을 수 도 있다. 엔티티.. 2023. 9. 20.