본문 바로가기

Java108

JAVA ORM - JPA(영속성 컨텍스트) 영속성 컨텍스트(Persistence Context)란엔티티를 관리하는 저장소라고보면 된다. 엔티티 매니저가 엔티티를 영속성 컨텍스트에 보관하고, 이 컨텍스트 내에서 엔티티의 상태를 관리한다.1. 엔티티 객체의 생명 주기를 관리하고2. 1차 캐시로서 DB에서 조회한 엔티티를 메모리에 캐시해서 반복 조회 시 비용절감의 효과가 있고3. 영속 엔티티의 동일성을 보장하고4. 엔티티의 변경 사항 감지하고 트랜잭션이 끝날 때 DB에 반영함. 1. 엔티티의 생명주기비영속(Transient) : 새로운 엔티티 객체를 생성하면 비영속 상태영속(Persistent) : 영속성 컨텍스트에 의해 관리되는 상태 (entityManager.persist() 메서드 호출)준영속(Detached) : 한 번 영속상태였다가 영속성 컨.. 2024. 7. 31.
JAVA ORM - JPA(기본 세팅, 간단한 JPA예제) 본격적으로 QueryDsl을 써보기 전에 Java 표준 ORM인 JPA부터 자세히 파보고 해봐야겠다 생각이 들어 JPA강의를 샀다.먼저 ORM이란? 객체 관계 매핑(Object-Relational Mapping, ORM)은 객체 지향 프로그래밍 언어를 사용하여 데이터베이스를 조작할 수 있게 해주는 기술이다. 데이터베이스 테이블을 객체로 매핑해서 쿼리를 작성하지 않고도 데이터를 다룰 수 있다는 것이다. 내가 여태껏 사용했던 Spring Data JPA와 그냥 JPA는 뭐가 다른걸까?ㅇ JPA (Java Persistence API)JPA는 Entity, Entity Manager, JPQL(Java Persistence Query Language) 등을 제공해 데이터베이스의 데이터를 객체로 매핑하고, 이를.. 2024. 7. 30.
JWT를 가장 쉽게 적용해보자. 1. 나는 gradle기준이다. 고로 build.gradle에 의존성 추가를 해주자. implementation 'io.jsonwebtoken:jjwt-api:0.11.2' implementation 'io.jsonwebtoken:jjwt-impl:0.11.2' implementation 'io.jsonwebtoken:jjwt-jackson:0.11.2' 첫줄부터 역할을 간략히 보자.implementation 'io.jsonwebtoken:jjwt-api:0.11.2'JWT를 생성, 서명, 인코딩, 파싱하는 기능을 제공함. implementation 'io.jsonwebtoken:jjwt-impl:0.11.2'위의 기능들의 실제 구현을 제공함.(서명 알고리즘, JWT토큰의 인코딩/디코딩,.. 2024. 6. 28.
QueryDsl에 대해 알아보자. 오랜만에 포스팅이다. 그간 취업이안돼서 방황도해보고 자격증공부도 해보고 혼자 웹페이지 프로젝트도 해보고 그런시간을 보냈다.요즘 다시 열정이 돌아와 열심히 취업을 준비중이다.전에 편하게 쓰던 Jpa를 보다가 jpa n+1 문제에 대한 해법으로 QueryDsl 에 대해 알게 되었고, 동영상 강의가 있길래 한번 정리해본다.QueryDSL은 간단하게 설명하자면 자바 기반의 데이터베이스 쿼리 언어로, 타입안전한 방식으로 쿼리를 작성할 수 있게 도와주는 기술이다. 기존의 JPQL이나 SQL같은 문자열 기반 쿼리 언어의단점을 보완하기 위해 설계되었다. 장점으로는 컴파일 시에 쿼리 오류를 잡을 수 있어 더 안전하고 유지보수가 쉬워진다는 점이있다.먼저 QueryDsl을 쓰기위해 build.gradle에 이렇게 의존성을 .. 2024. 5. 27.