@OneToMany , @ManyToMany 를 사용해 엔티티관계를 매핑할때@ElementCollection 을 사용해 값 타입을 하나 이상 보관할때Jpa 명세에는 자바 컬렉션 인터페이스에 대한 특별한 언급이 없다. 밑의 예시들은 하이버네티으 구현체 기준이다.하이버네이
영속성 컨텍스트에는 엔티티 인스턴스를 보관하기 위한 1차 캐시 저장소가 있다.1차 캐시는 영속성 컨텍스트와 생명주기를 같이한다.엔티티를 1차 캐시에 저장하기 때문에 데베와의 연결을 최소화 할 수 있게 된다.spring data jpa 는 트랜잭션의 주기와 영속성 컨텍스
트랜잭션을 커밋하면 JPA는 영속성 컨텍스트를 플러시해서 변경 내용을 데베에 반영 후 데베 트랜잭션을 커밋한다.만약 예외가 발생하면 트랜잭션을 롤백하고 종료하는데 이때는 플러시를 호출하지 않는다.(즉 1차 캐시의 엔티티 값은 변경됐는데 데베의 값은 변경되지 않음)여러
JPA가 제공하는 기능은 엔티티와 테이블을 매핑하는 설계부분, 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다 엔티티 매니저 팩토리와 엔티티 매니저 엔티티매니저는 엔티티를 저장, 수정, 삭제 조회 등 엔티티와 관련된 모든 일을 한다. 엔티티를 저장하는 가상의
테이블과 매핑할 클래스는 @Entity 애노테이션을 필수로 붙인다.@Entity가 붙은 클래슨느 JPA 가 관리하는 것으로, 엔티티라 부른다.속성 name : JPA에서 사용할 엔티티 이름 지정 : 기본값 클래스 이름을 사용한다. 주의사항1\. 엔티티 클래스는
연관관계 매핑 키워드방향 : 단방향, 양방향 이 있으며, 회원 -> 팀 또는 팀 -> 회원 둘 중 한쪽만 참조하는 것을 단방향, 회원 <-> 팀 처럼 양쪽 다 참조하는 것을 양방향 관계라고 한다. 방향은 객체에만 존재하고 테이블 관계는 항상 양방향 관계이다. 다중
@JoinColumn(name ="TEAM_ID") 를 이용해서 Member.team 필드를 TEAM_ID 컬럼과 매핑했다. 따라서 Member.team 으로 외래키를 관리한다.연관관계 주인이 아닌 Team.members 필드는 단지 조회를 위한 JPQL 또는 객체
연관된 객체가 항상 사용되는 것은 아니다. 사용되지도 않은 연관된 엔티티를 함께 쿼리해서 데이터를 가져오는 것은 효율적이지 못하다.JPA는 이런 문제를 해결하기 위해 엔티티가 실제 사용할 떄까지 데이터베이스 조회를 지연하는 방법 (지연로딩) 을 사용한다.즉 team.
JPQL : Java Persistence Query Language >JPQL의 특징 엔티티 객체를 조회하는 객체지향 쿼리. SQL 을 추상화해서 특정 데베에 의존하지 않음. JPQL을 잘 분석한 다음 SQL을 만들어 데베를 조회하고, 그 결과로 엔티티 객체를 생
쿼리를 문자 아닌 코드로 작성하고, 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발할 수 있는 프로젝트 querydsl-jpa: QuerDSL JPA 라이브러리 querydsl-apt: 쿼리 타입을 생성할 때 필요한 라이브러리in pom.xml 메이븐 컴파일하면 t
입력 값을 두배로 증가시키는 proc_mulitply 스토어 프로시저.첫번째 파라미터로 값을 입력 받고, 두번째 파라미터로 값을 반환한다.registerStoredProcedureParameter() 에는 파라미터 (순서, 이름) , 타입, 파라미터 모드를 입력하면 된
엔티티를 수정하려면 연속성 컨텍스트의 변경 감지 기능이나 병합을 사용하고 삭제하라면 em.remove를 사용한다.하지만 이 방법은 대량의 데이터를 하나씩 처리하기엔 너무 많은 시간이 걸린다.이런 여러건의 데이터를 한번에 수정 삭제 처리할 때는 벌크연산을 사용한다.벌크
스프링이 제공하는 프로젝트이며 CRUD를 공통 인터페이스로 해결해준다.구현체는 스프링 데이터 JPA가 생성해서 주입해줌으로 개발자가 직접 JPA 인터페이스를 구현하지 않아도 된다.JpaRepository 를 상속받고 사용할 수 있는 주요 메서드T = 엔티티