Spring/Spring Data JPA 27

[자바 ORM 표준 JPA 프로그래밍] 4. 엔티티 매핑

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 4. 엔티티 매핑@Entity테이블과 매핑할 엔티티에 붙이는 어노테이션 입니다. 주의사항기본 생성자 필수final class, inner class, enum, interface 사용 불가final 키워드 사용 불가 @Table엔티티와 매핑할 테이블 지정 (생략 시, 엔티티 이름과 동일한 테이블) 속성name매핑할 테이블 이름catalogcatalog 기능이 있는 데이터베이스에서 catalog를 매핑함schemaschema 기능이 있는 데이터베이스에서 schema를 매핑함uniqueConstraints DDL 생성 시에 유니크 제약조건을 만듬 @Column컬럼 제약조건 설정 속성name컬럼 이름nullablenull값 허용 ..

[자바 ORM 표준 JPA 프로그래밍] 3. 영속성 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 3. 영속성 관리영속성 컨텍스트엔티티를 관리하는 환경입니다. 엔티티 생명주기new / transient (비영속)엔티티 객체를 생성한 시점의 상태입니다.영속성 컨텍스트와 전혀 연관이 없습니다. managed (영속)영속성 컨텍스트에 저장된 상태입니다. detached (준영속)영속성 컨텍스트에 저장되었다가 분리된 상태입니다.영속성 컨텍스트에서 삭제됨: 1차 캐시, 해당 엔티티 관련 쿼리 (내부 쿼리 저장소) removed (삭제)엔티티 객체가 삭제된 상태입니다. (데이터베이스에 삭제될 예정)준영속 상태의 엔티티가 대상입니다. (비영속 -> 영속 -> 준영속 -> 삭제) 상태 메서드find(): 엔티티 조회Member memb..

[자바 ORM 표준 JPA 프로그래밍] 2. JPA 시작

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 2. JPA 시작애플리케이션 개발public class JpaMain { public static void main(String[] args) { // 엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); EntityManager em = emf.createEntityManager(); // 엔티티 매니저 생성 EntityTransaction tx = em.getTransaction(); // 트랜잭션 기능 획득 try { ..

[자바 ORM 표준 JPA 프로그래밍] 1. JPA 소개

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. SQL을 직접 다룰 때 발생하는 문제점Repetitionsteps for developing an sql mapper// JDBC 연결 정보String url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";// 데이터베이스 연결 및 쿼리 실행try (Connection connection = DriverManager.getConnection(url, username, password)) { String sql = "SELECT id, name, email FROM users WHERE id..

[Spring Data JPA] 2-2. Transactionality

1. 기본 트랜잭션 설정CrudRepository 메서드SimpleJpaRepository로부터 트랜잭션 설정을 상속받습니다.읽기 작업의 경우, 트랜잭션 설정의 readOnly 플래그는 true로 설정됩니다.그 외의 모든 작업은 @Transactional로 설정됩니다. (기본 트랜잭션 설정이 적용되도록) 2. 트랜잭션 설정 커스터마이징특정 저장소 메서드의 트랜잭션 설정 조정Method Override (+@Transactional 설정)findAll() 메서드는 10초의 타임아웃을 갖고 readOnly 플래그 없이 실행됩니다.public interface UserRepository extends CrudRepository { @Override @Transactional(timeout = 10) pu..

[Spring Data JPA] 1. Core concepts

1. Repository 인터페이스@Indexedpublic interface Repository { }Spring Data의 중심 인터페이스입니다. 마커 인터페이스타입 정보 포착 및 식별에 활용 (구체적 메서드 X)확장 인터페이스 식별 및 추적 Spring Data JPA 와의 연계Spring Data JPA는 Repository 인터페이스를 인식하여, 개발자가 필요로 하는 CRUD 작업의 구현체를 자동으로 제공합니다. 타입 인자T: 도메인 클래스ID: 도메인 클래스의 식별자 타입 2. CrudRepository와 ListCrudRepository 인터페이스관리되는 엔터티 클래스에 대해 고급 CRUD 기능을 제공합니다.개발자는 이 인터페이스를 확장함으로써 엔터티에 대한 기본 CRUD 작업을 쉽게 수행할..