분류 전체보기 썸네일형 리스트형 [kotlin] JPA 11: Spring Boot에서 트랜잭션과 락 들어가기트랜잭션은 단순해보이면서도 복잡하다. 이는 단지 한개 처리만 다루는게 아니라 여러 처리가 동시에 발생할 경우를 다루기 때문이다. 데이터베이스에서도 이를 해결하기 위한 기능을 제공하고 있지만 JPA에서 트랜잰션을 다룰 다양한 기능을 제공하고 있다. 하나씩 살펴보자.작성자: http://ospace.tistory.com/ (ospace114@empal.com)트랜잭션트랜잭션은 ACID를 보장하기 위한 기술이다. ACID는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 약자이다. 만약, 여러 트랜잭션이 실행될 경우 다른 트랜잭션에서 대한 액세스 권한을 제어 해야한다. 이를 위해 ANSI에서는 트랜잭션 격리 수준 4단계로 나누어서 .. 더보기 [kotlin] JPA 10: Spring Boot에서 엔티티 그래프 들어가기JPA에서는 성능을 위한 다양한 기능을 제공하고 있다. 엔티티 그래프도 그 중에 하나이다. 엔티티에서 성능 최적화를 위해서 내부 속성에 대해 즉시 로딩과 지연 로딩을 지원한다. 이런 기능은 컴파일 타임에 설정되어 변경할 수 없다. 엔티티 그래프를 사용할 경우 런타임에 제어할 수 있다. 엔티티 그래프 사용하는 방법을 간단하게 살펴보자.작성자: http://ospace.tistory.com/ (ospace114@empal.com)엔티티 그래프란?엔티티 그래프는 JPA 2.1에서 소개되었다. 엔티티 그래프는 로딩 성능 관련해 좀 더 세밀하게 제어하는 기능을 제공한다. 엔티티 내의 관련 영속 속성들을 그룹핑한 템플릿을 정의하고 런타임에 이를 선택적으로 적용할 수 있다. 엔티티 그래프가 n+1 조회 이슈를.. 더보기 [kotlin] JPA 9: Spring Boot에서 엔티티 이벤트 리스너 들어가기엔티티 이벤트 리스너에 대해서 다룰려고 한다. 여기서 이벤트는 엔티티와 관련된 이벤트로 로딩, 변경, 추가 등이 있다. 이벤트 처리 방식은 비동기 방식에서 자주 사용하는 방식으로 현재 실행 중인 메인 로직에 영향을 주지 않으면서 처리 중인 작업과 연관되서 실행하는 경우에 매우 유용하다. 여기서 사용한 환경은 Spring Data JPA을 사용했고 데이터베이스는 H2를 사용했다.작성자: http://ospace.tistory.com/ (ospace114@empal.com)이벤트 어노테이션JPA에서 엔티티의 생명주기 동안에 여러가지 이벤트를 발생한다. 이를 적절한 핸들러도 처리할 수 있도록 어노테이션을 사용해서 설정할 수 있다. 엔티티에서 발생하는 이벤트에 대해 다음과 같은 어노테이션을 사용해서 실.. 더보기 [kotlin] JPA 8: Spring Boot에서 엔티티 매니저와 Criteria 쿼리 들어가기JPQL 작성을 도와주는 API로 Criteria Query와 QueryDSL이 있다. Criteria Query는 표준이지만 QueryDSL은 표준은 아니다. 사용에 있어서는 QueryDSL이 더 좋기 때문에 알아두면 좋다. 여기는 JPA 표준인 Criteria Query에 대해서 다룰려고한다. 쿼리에 대한 자세한 설명이 이전 글을 참고하시기 바란다. 여기서는 Criteria Query 작성에 집중했다.작성자: http://ospace.tistory.com/ (ospace114@empal.com)Entity Manager 사용Criteria Query를 사용하기 위해 기존 리포지토리를 확장해서 엔티티 매니저(EntityManager)를 가져와야 한다. 엔티티 매니저는 엔티티 객체를 영속 컨텍스트.. 더보기 [kotlin] JPA 7: Spring Boot에서 JPQL과 @Query 들어가기Repository를 사용해 쿼리 메소드로 어느정도 데이터 처리하는데 문제는 없지만 정교하고 복잡한 처리를 할 경우 한계가 있다. 이런 한계를 JPQL을 사용해서 다양한 쿼리를 실행할 수 있다. Spring Data에서 @Query을 사용해서 쉽게 JPQL을 사용할 수 있도록 만들어준다. 사전에 Ansi SQL 학습을 권장한다.작성자: http://ospace.tistory.com/ (ospace114@empal.com)환경 구성앞으로 사용할 엔티티는 총 3개로 아래와 같이 구성된다.아래는 데이터베이스에서 사용할 초기 데이터이다.insert into member(name, likes) values ('bar', 1);insert into member(name, likes) values ('fox'.. 더보기 [kotlin] JPA 6: Spring Boot에서 Repository 활용 들어가기 데이터베이스에서 데이터를 조회하거나 저장하기 위해서 연동해주는 객체가 필요하다. 이를 리포지토리라고 한다. 일반적인 리포지토리이면 실제 데이터베이스에 데이터를 저장하거나 조회하기 위한 JDBC를 사용하거나 라이브러리 사용할 경우 쿼리를 작성해 줘야한다. 그러나 JPA에서는 더 쉽게 자동으로 처리해준다. 어떻게 할 수 있는지 살펴보자. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 리포지트리 구조 Spring Data에서 리포지토리를 위한 Repository 인터페이스를 제공한다. 이 인터페이스를 통해 데이터베이스와 연동된다. 아래는 Spring Data JPA에서 제공되는 Repository의 상속 트리 구조이다. Repository 인터페이스를.. 더보기 [kotlin] JPA 5: Spring Boot에서 Entity 고급관계 들어가기JPA에서 연관관계 말로 다양한 관계를 표현할 수 있다. 클래스 상속 관계, 내포관계, 콜렉션 데이터 표현 등 다양하다. 이번에는 이전 연관간계 외에 엔티티에서 사용되는 다양한 관계를 살펴볼려고 한다.작성자: http://ospace.tistory.com/ (ospace114@empal.com)어노테이션 목록IdClassEmbeddedIdMappedSuperclassInheritanceDiscriminatorColumnDiscriminatorValueEmbeddableEmbeddedAttributeOverrideSecondaryTableElementCollectionCollectionTablePrimaryKeyJoinColumnForeignKeyIndex@IdClass 어노테이션두 어노테이션은 복.. 더보기 [kotlin] JPA 4: Spring Boot에서 Entity 연관관계 들어가기 엔티티는 여러 개가 존재하고 엔티티 간에 관계가 존재하다. 이런 관계는 대부분 데이터베이스 기준으로 ER 다이어그램에서 카디널리티(cardinality)에 해당한다. 결국 데이터베이스에 테이블 간에 관계를 엔티티로 매핑하는 방식을 기술한다. 이런 엔티티 간에 관계를 연관관계라고 한다. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 샘플 아래는 샘플로 사용할 엔티티 클래스 다이그램이다. 사용자가 서비스에 가입하고 게시물을 관리하기위한 구조이다. 앞으로 다룰 엔티티 연관관계를 다루기 위해 만든 샘플이므로 참고만 하시기 바란다. 연관관계 관계는 다중성과 방향을 알아야 한다. 다중성은 두 대상이 서로 1:1, 1:N, N:M 관계인지를 의미한다. 방향은.. 더보기 이전 1 2 3 4 5 ··· 51 다음