JPA 영속성

오늘 알아볼 것은 JPA의 기초인 영속성을 알아보자. 맨날 매핑, 조인등등 알아봤지만 JPA에서 가장 중요한 영속성을 포스팅은 안한듯하다. 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장하는 환경? 이라고 해석 할 수 있다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. entityManager.persist(member) 이 코드는 단순히 회원 엔티티를 저장하는데 정확히 이야기 하면 persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. 엔티티의 생명주기 비영속성(new/transient) : 영속성 컨텍스트와 전혀 관계가.. Read More

JPA 부가 기능

@OrderBy @OrderColumn이 데이터베이스에 순서용 컬럼을 매핑해서 관리했다면 @OrderBy는 데이터베이스의 Order by절을 사용해서 컬렉션을 정렬한다. 따라서 순서용 컬럼을 매핑하지 않아도 된다. 그리고 @OrderBy는 모든 컬렉션에 사용할 수 있다. @OneToMany(mappedBy = “team”) @OrderBy(“username desc, id asc”) private Set<Member> members = new HashSet<Member>(); 위는 Team.members를 보면 @OrderBy를 적용했다. 그리고 값으로는 username desc, id asc를 사용해서 username필드로 내림차순 id로는 오름차순 정렬을 하였다. @OrderBy의 값은 JPQL의 order by절처럼 엔티티의 필드를 대상으로 한다. select m.* from.. Read More

JPA 컬렉션

JPA 와 컬렉션에 대해서 알아보자 JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원하고 다음 경우에 이 컬렉션을 사용할 수 있다. 1. @OneToMany, @ManyToMany 를 사용해서 일대다나 다대다 엔티티를 매핑할 때 2. @ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때 자바의 컬렉션 인터페이스의 특징은 다음과 같다. – Collection : 자바가 제공하는 최상위 컬렉션이다. 하이버네이트는 중복을 허용하고 순서를 보장하지 않는다고 가정한다. – Set : 중복을 허용하지 않는 컬렉션이다. 순서를 보장하지.. Read More