본문 바로가기
반응형

Framework & Lib & API/JPA4

코틀린 JPA Entity 작성법 자바에서 Entity를 작성하다 코틀린에서 Entity를 작성하려고 하면 자바와 다른 방식으로 인해 Entity를 작성하는 것이 쉽지가 않다. 클래스 작성 키워드, 변수 선언 키워드, 생성자 선언 방식, 디폴트값 정의 등 자바에 존재하지 않거나 다른 방식으로 인해 Entity 클래스 설계시 고려해야할 부분이 많다. 코틀린에서 제공하는 다양한 방식으로 클래스를 설계하며 각 클래스가 Entity의 조건에 맞는지 도메인 객체를 잘 표현하는지 확인해보며 Best Practice Entity 설계 패턴을 찾아나가보도록 하겠다. 우선 Entity의 조건에 대해 알아보겠다.(https://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html) 클래스의 접근 지정자는 public 또는.. 2024. 3. 13.
쿼리dsl, 코틀린 case when sum 구문에서 사용하기 환경 코틀린 1.9.22 springboot:3.2.2 querydsl:5.0.0:jakarta Case when 구문 Sum과 함께 사용시 then 상수값에 타입 필요 case when sum 구문을 통해 집계 자료를 구하기 위해 쿼리를 실행하였더니 아래와 같은 에러가 나타났다. java.lang.NullPointerException: Cannot invoke "org.hibernate.query.ReturnableType.getJavaType()" because "argType" is null at org.hibernate.dialect.function.SumReturnTypeResolver.resolveFunctionReturnType(SumReturnTypeResolver.java:82) at o.. 2024. 3. 6.
jpa 연관관계 EAGER와 LAZY(etc, 실제 겪은 문제들) jpa는 기본적으로 하나의 엔티티를 가져올 때, 연관관계에 있는 엔티티를 모두 가져온다. 사용하지 않는 엔티티까지 모두 가져오는 것은 굉장한 손해이다. 물론, jpa가 mybatis에 비해 쿼리 재사용성이 높으니 이 정도 손해는 감수해도 되지 않나(?) 라고 생각할 수도 있지만 그럼에도 불구하고 사용하지 않는 엔티티를 가져오는것은 누가 생각하더라도 손해이다. 이러한 손해를 해결해줄 수 있는 방법이 바로 "지연로딩 LAZY"이다. 이를 알아보기 전에 먼저 알고 있으면 도움이 되는 개념이 "프록시" 이다. 내가 알고 있는 프록시라는 개념은 서로 다른 서버의 연결이나 데이터 전달을 해주는 매개체 정도로 알고 있다. 하나의 웹어플리케이션을 본다면 web서버와 was서버를 연결하는 프록시, was서버와 db를 연.. 2022. 6. 26.
jpa 영속성 컨텍스트 개념 영속성 컨텍스트 영속성 컨텍스트란 jpa에서 엔티티를 db에 반영하기 전에 영속화하는 공간이다. 대체적으로 영속성 컨텍스트를 엔티티를 영구 저장하는 공간이라고 하는데 이는 물리적인 개념이 아니라 논리적인 개념으로 실제 영속성 컨텍스트에서 db에 존재하는 모든 엔티티를 저장하는게 아닌 필요할 때마다 가져와서 영속성 컨텍스트에서 사용하므로 논리적으로는 영구 저장되는 공간이라고 하는 것 같다. (실제 물리적으로는 트랜잭션 단위의 휘발성 메모리공간) 서버단에 존재하는 가상의 DB역할을 하는 일종의 메모리 공간이며 엔티티의 변화를 감지하여 DB에 반영전 객체로 우선적으로 작업하는 공간이라고 생각하면 될 것 같습니다. 영속성 컨텍스트의 구조를 보면 위와 같이 영속성 컨텍스트는 EntityManger 안에 존재하며 .. 2022. 6. 12.
반응형