분류 전체보기 (126) 썸네일형 리스트형 [JPA] 영속성 컨텍스트(Persistence Context) _디버깅의 눈물 1.영속성 컨텍스트 개념 영속성 컨텍스트란 엔티티(Entity) 객체를 관리하는 데 사용되는 메모리 영역입니다. 영속성 컨텍스트의 역할과 목적: 영속성 컨텍스트는 JPA의 핵심 컴포넌트로서 엔티티 객체의 생명주기를 관리하고, 엔티티와 데이터베이스 간의 상호작용을 도와줍니다. 영속성 컨텍스트는 엔티티를 식별하고 추적하는 데 사용되며, 데이터베이스에서 가져온 엔티티와 변경된 엔티티를 관리하고 데이터베이스에 변경사항을 반영합니다. 영속성 컨텍스트의 특징과 동작 원리: 영속성 컨텍스트는 논리적인 개념으로서 물리적인 저장소가 아닙니다. 각 JPA 구현체(예: Hibernate)마다 영속성 컨텍스트를 관리하기 위한 내부 구현이 있습니다. 영속성 컨텍스트는 논리적인 트랜잭션 범위 내에서 동작하며, 트랜잭션의 커밋 시.. [java(자바)] checked Exception vs unchecked Exception _디버깅의 눈물 Object -Object는 자바의 모든 클래스의 최상위 클래스입니다. -모든 클래스는 Object 클래스를 암묵적으로 상속받습니다. -Object 클래스는 모든 객체에 대한 기본적인 메서드를 정의하고 있으며, 모든 자바 객체는 Object 클래스의 메서드를 사용할 수 있습니다. 예를 들어, equals(), hashCode(), toString() 등의 메서드가 있습니다. Throwable -Throwable은 자바에서 예외 처리를 위한 클래스의 최상위 클래스입니다. -Throwable 클래스는 예외(Exception)과 오류(Error)를 처리하기 위한 기본적인 메커니즘을 제공합니다. -Throwable 클래스는 두 가지 주요 하위 클래스를 가지고 있습니다: Exception과 Error. Error.. [Network(네트워크)] XSS(Cross Site Scripting, 사이트 간 스크립팅) _디버깅의 눈물 XSS(Cross Site Scripting, 사이트 간 스크립팅)이란? 공격자가 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격입니다. XSS 공격의 예시 Reflected XSS(반사 XSS)의 경우, 공격자가 피싱 메일이나 SNS 등을 통해 악성 스크립트 코드가 삽입된 링크를 보냅니다. 피해자가 그 링크를 클릭하면, 웹 사이트에 스크립트 코드가 반영되어 실행됩니다. 이때 스크립트 코드는 피해자의 세션 쿠키나 개인정보 등을 탈취할 수 있습니다. Stored XSS(저장 XSS)의 경우, 공격자가 게시판이나 댓글 등 입력 form에 악성 스크립트 코드를 작성합니다. 다른 사용자가 그 글을 열람하면 웹 페이지에 스크립트 코드가 저장되어 실행됩니다. 이때 스크립트 코드는 사용자의 브라우.. [spring(스프링)] JWT(JSON Web Token) _디버깅의 눈물 JWT(JSON Web Token)이란? JWT(JSON Web Token)는 JSON 형식의 데이터를 사용해 안전하게 정보를 전송하고, 인증하는데 사용되는 암호화된 토큰입니다. JWT의 구조 1. 헤더(Header) 토큰의 타입 및 암호화 알고리즘 정보를 포함합니다. 2. 내용(Payload) 전달하려는 정보가 name/value의 쌍으로 포함되어 있습니다. 클래임(claim)이라고도 부르며, 클레임에는 사용자 ID, 권한 등의 정보가 포함됩니다. 3. 서명(Signature) 토큰의 유효성 검증을 위한 서명입니다. 서명은 헤더와 페이로드, 그리고 발급 서버가 지정해준 비밀키를 조합하여 생성됩니다. JWT의 작동 방식 HTTP 헤더에 암호화된 JSON 토큰을 실어 서버가 클라이언트를 식별하는 방식으로 .. [Network(네트워크)] CSRF(Cross Site Request Forgery, 사이트 간 요청 위조) _디버깅의 눈물 CSRF(Cross Site Request Forgery, 사이트 간 요청 위조)란? ‘사이트 간 요청 위조’는 공격자가 인증된 사용자의 권한을 빼앗아, 특정 웹 사이트에 사용자가 의도치 않은 악의적인 요청(request)을 하도록 하는 것입니다. 사용자가 웹 사이트에 로그인한 상태에서 사이트 간 위조 요청 공격 코드가 삽입된 페이지를 열게 됩니다. 그러면 공격 대상이 되는 웹 사이트는 '위조된 공격 명령을 믿을 수 있는 사용자로부터 발송된 것으로 판단해' 위험에 노출됩니다. CSRF의 과정 1.공격자는 사용자가 신뢰하는 웹 사이트에 악성 코드를 삽입한 게시물을 등록합니다. 2.로그인이 되어 있는 사용자는 해당 게시물의 조회를 요청하면서 악성 코드를 실행하게 됩니다. 3.접속된 악성 웹 사이트에서 공격자.. [spring(스프링)] Refresh Token이란? _디버깅의 눈물 Refresh Token(리프레시 토큰) Refresh Token은 Access Token을 재발급 받는데 사용되는 토큰입니다. 짧은 유효 기간을 가지고 있는 Access Token이 만료된 경우, 새로운 Access Token으로 갱신하여 사용자가 다시 로그인을 하지 않아도 인증을 유지할 수 있도록 합니다. Refresh Token의 보안상 이점 Access Token은 JWT이므로, 그 자체로 인증 정보를 모두 가지고 있기 때문에 탈취될 경우 매우 위험합니다. Stateless 방식으로 작동하기 때문에, 서버 측에서는 이 토큰을 가지고 있는 클라이언트가 정말 본인이 맞는지 확인하기 어렵습니다. 반면 Refresh Token은 서버에 저장됩니다(Stateful). 따라서 Refresh Token이 해커.. [spring(스프링)] JPA의 N+1 문제란? _디버깅의 눈물 N+1 문제란? N+1 문제는 일반적으로 *지연 로딩 방식을 사용할 때 발생할 수 있는 성능 이슈입니다. 엔티티를 조회하는 SQL 쿼리와 연관된 엔티티를 조회하는 SQL 쿼리가 총 N+1번 발생하는 문제입니다. 이로 인해 쿼리 횟수가 증가하여 성능 저하를 야기합니다. 일반적으로 다수의 엔티티를 조회하는 경우에 발생하며, 일대다(1:N) 또는 다대다(N:M) 등의 연관 관계에서 자주 발생합니다. 발생 상황 다음은 N+1 문제가 발생하는 예시 코드입니다. 예를 들어, Department와 Employee 엔티티가 일대다 관계로 매핑되어 있을 때, Department 엔티티를 조회하고 각 부서별 Employee 엔티티를 함께 조회하려고 합니다. 하나의 부서는 여러 직원을 가지고 있으므로 1:N 관계로 설정되어.. [spring(스프링)] JPA(Java Persistence API)란? _디버깅의 눈물 JPA(Java Persistence API)? ORM을 위한 자바의 표준 인터페이스로, 객체와 관계형 데이터베이스 간의 매핑(ORM)을 처리해주는 API입니다. JPA는 단순 명세이기 때문에 구현이 없습니다. 실제로 JPA를 사용하기 위해서는 JPA를 구현한 Hibernate 같은 ORM 프레임워크를 사용해야 합니다. *Hibernate는 JPA의 기능을 확장해 사용하기 위해 JPA 인터페이스를 기반으로 만든 구현체 중 하나입니다. JPA의 장점과 단점 장점 1. 생산성 : ORM을 제공함으로써 개발자가 직접 SQL문을 작성하지 않아도 됩니다. 2. 객체 지향적인 코드 : JPA를 사용하면 데이터베이스의 데이터를 객체로 매핑할 수 있습니다. 이를 통해 객체 지향적인 코드 설계가 가능합니다. 3. DBM.. 이전 1 2 3 4 ··· 16 다음 목록 더보기