#JPA
4
Java EcoSpring Framework
Guide to learning the Spring Framework Transaction
스프링의 @Transactional 애노테이션 하나면 트랜잭션을 쉽게 다룰 수 있다고 생각했는데, 실무에서 쓰다 보니 생각보다 고려할 게 많았다. 프록시가 어떻게 동작하는지, 전파 규칙은 어떻게 설정해야 하는지, JPA와는 어떻게 맞물리는지 등등... 그래서 트랜잭션의 기본 개념부터 스프링이 내부적으로 어떻게 처리하는지까지, 실무에서 마주쳤던 내용들을 정리해봤다. 트랜잭션은 데이터베이스에서 데이터의 일관성과 원자성(Atomicity) 을 보장하기 위한 최소 작업 단위다. 스프링은 이 트랜잭션 개념을 추상화해서, 개발자가 데이터베이스
Java EcoJPA
JPA의 연관관계와 즉시로딩 이슈
테이블과 객체의 연관관계에 대한 패러다임의 차이가 있다. 테이블은 연관관계라고 할 만한 것이 없다 (constraint 제외) 테이블간 연관관계가 필요하면 JOIN을 통해 관계를 갖는 방법 뿐이다. 반면 객체는 참조용 필드가 있으면 그쪽으로 참조가 가능하다. 클래스 내 멤버의 참조를 통해 이뤄진다. 이를 통해 양방향과 단방향 모두 관계를 정립할 수 있다. 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 객체는 양방향 관계가 필요할 경우 양 객체에서 각각 참조가 필요하다. 외래키를 들고있는 쪽이 연관관계의 주인. 이것은 다(
Java EcoTILSpring Framework
Spring Boot; 훑어보기#5 - Spring Data JPA
구현체 없이 인터페이스만으로 리포지토리에 커밋이 가능한 코드를 만들 수 있다. 반복적으로 개발한 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. RDB에서 스프링 데이터 JPA는 아주 좋은 기능이다. 이외의 인터페이스 선언이나 구현체는 필요없다. 인터페이스 이름에 규칙이 있다. (JPQL) 예를들어 findByNameAndId 라고 하면 & 연산자를 넣을 수 있다. 간단한 요구사항은 인터페이스 이름만으로 개발이 끝난다. 페이징 기능을 자체적으로 제공한다. 의존주입도 Repository 의존만 받아오면 된다. 스프링 데이터 J
Java EcoTILSpring Framework
Spring Boot; 훑어보기#4 - JPA
JPA → 인터페이스 (자바 표준) hibernate → 구현체 (여러 벤더들이 있음) 쿼리도 JPA가 직접 만들어서 실행해준다. 객체를 메모리에 넣듯 DB에 넣을 수 있게 해준다. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다. build.gradle application.properties spring.jpa.show-sql: JPA가 날리는 쿼리를 볼 수 있다. spring.jpa.hibernate.ddl-auto: 테이블을 자동으로 만들어주는 기능이다. (none/create) @Id : 인식