본문 바로가기
  • Where there is a will there is a way.

JPA4

알뜰폰에 대한 잘못된 편견 개발자로 이번에 알뜰폰 요금제 비교사이트를 만들었다. 그러면서 알뜰폰은 흔히 어르신들이 사용하는 폰인 줄 알았는데 실상은 그게 아니었다 .. 난 10만원 정도 내고 있었는데 주변에서 같은 데이터를 사용하는데 3만원에서 2만원정도를 내고 있었다 .. 충격 알뜰폰은 같은 통신사를 사용하고 있기때문에 전혀 통신 품질이 낮아지지 않는다고 한다 ;; 모두의 요금제에서 해당 내용을 풀어놨다 https://www.moyo.company/tips/fact-check 2021. 9. 14.
JPA 애플리케이션 영속성 관리 처음 멘땅에 개발을 하면서 @Service Layer 에 @Transcational 을 본 기억이 많다. 그냥 아무 생각없이 붙이거나 붙여져 있는걸 보면서 개발했던 것 같다. 뭐 여러가지로 시간이 지나면서 어느정도 알게 되었지만 이참에 책에 나온내용을 토대로 정리해볼까 한다. 내가 정리할 내용은 스프링 + JPA 환경에서의 영속성 관리에 대해서이다. 1.1 트랜잭션 범위의 영속성 컨텍스트 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 이 전략은 이름 그대로 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻이다. 즉 , 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다. 그리고 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍.. 2020. 4. 13.
JPA 기초 프록시란 무엇인가 프록시란? JPA 구현체들은 연관된 객체들 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 이와 관련 된 기술이 프록시 인데, 이 프록시를 통해서 즉시로딩 ( EAGER ) 과 지연로딩 ( LAZY ) 을 할 수 있다. JPA 표준 명세는 지연 로딩 구현방법을 JPA 구현체에 위임했다. 하이버네이트는 지연 로딩을 지원하기 위해 프록시를 사용하는 방법과 바이트코드를 수정하는 두 가지 방법을 제공하는데 바이트코드를 수정하는 방법은 복잡하다. 프록시의 기초 JPA 에서 식별자로 엔티티를 하나 조회할 때 EntityManger.find(); or repository -> findById(); 이 메소드는 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회.. 2020. 4. 12.
13장 웹 어플리케이션과 영속성 관리 스프링 컨테이너 기본 전략 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. 즉 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻이다. 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다 @Service 에 @Transactional 어노테이션을 사용해서 시작할때 호출한 메소드를 실행하기 직전에 스프링 트랜잭션 AOP가 먼저 동작한다. 스프링 트랜잭션 AOP 는 대상 메소드를 호출하기 직전에 트랜잭션을 시작하고, 대상 메소드가 정상 종료되면 트랜잭션을 커밋하면서 종료한다. 만약 서비스에 repository가 두개가 있고 트랜잭션이 같으면 항상 같은 영속성 컨텍스트를 사용한다. 예를들어 @Transactional @Service.. 2019. 4. 18.