본문 바로가기

전체 글112

JPA를 이용한 다대일 객체 관계 매핑 JPA를 이용한 다대일 객체 관계 매핑한 회원은 하나의 팀에 속하며, 한 팀에는 여러 회원이 속하는 경우를 생각해보자. 팀은 회원에 대한 정보를 몰라도 괜찮다고 하면 아래와 같이 표현할 수 있다. JPA EntityMember.java @Entity public class Memeber { @Id @GeneratedValue @Column(name = "memberId") private Long id; private String userName; @ManyToOne @JoinColumn(name = "teamId") private Team team ​ //bla bla }@JoinColumn을 사용하여 Team과 다대일 관계를 매핑한다. @JoinColumn 주요 속성name - 속성은 외래키 컬럼의 이.. 2017.03.17
6. 다시 또 뮌헨. 유럽에 온다면 항상 다시 찾고 싶은 도시. 뮌헨 구 시가지 구석 구석 우리는 뉘른베르크 여행을 마치고 뮌헨에 도착했다. 이미 지난 유럽 여행 때 한번 찾은 도시이지만 꼭 다시 오고 싶었고, 추후 유럽 여행 시에도 기회가 된다면 또 한번 들르고 싶은 도시이다. 뮌헨은 독일 여행 시 가장 많이 찾는 도시이지만 로마, 파리, 베니스 등 '유럽'하면 대표적으로 떠오르는 도시들에 비하면 무언가 2% 부족한 느낌을 준다. 그럼에도 불구하고 나는 첫 유럽 여행 중 가장 기억에 남은 곳을 물어보면 늘 뮌헨이라고 말하곤 했다. 마리엔 광장(Marienplatz) 뮌헨의 어떤 스팟이나 건축물에 반한 것이 아니다. 정열적인 바르셀로나가 있고, 낭만적인 파리가 있듯이 뮌헨이 주는 이 도시만의 분위기가 있다. Karlstor을 지나면 마리엔 광장을 중심에 두고 있는 뮌.. 2017.03.12
JPA 기본 키 전략 JPA 기본 키 전략1. 직접 할당@id 애노테이션으로 필드와 매핑한다. 자바 기본형, 래퍼형, String, Date, BigDecimal, BigInteger가 타입이 가능하다 2. IDENTITY기본 키 생성을 데이타베이스에 위임한다. 데이타베이스의 auto_increment와 같은 기능을 사용할 때 쓴다. 키 필드에 @GeneratedValue(strategy = GenerationType.IDENTITY)를 사용한다.이 전략을 사용하면 JPA는 기본 키 값을 얻어오기 위해 데이타베이스를 추가로 조회한다. 따라서 이 전략을 사용하는 엔티티를 새로 생성하여 식별자 값을 할당하려면 1차 캐시를 넘어서 데이타베이스에서 Insert한 후에 기본 키 값을 조회한다. 즉, persist()를 호출하는 즉시 .. 2017.03.12
JPA를 이용한 엔티티 CUD(등록,수정,삭제) 엔티티 등록엔티티 매니저를 이용해서 엔티티를 영속성 컨텍스트에 등록한다1 transaction.begin(); 2 em.persist(memA); 3 em.persist(memB); 4 transaction.commit();트랜잭션이 시작된 후 memA 를 persist 하면 DB에 바로 반영되는 것이 아니다. memA의 Insert Query 를 영속성 컨텍스트 내의 내부 쿼리 저장소(쓰기 지연 SQL 저장소)에 저장하고 1차 캐시에만 엔티티를 저장한다. memB를 persist 할 때에도 마찬가지이다. 마지막으로 transaction.commit()이 호출될 때 flush가 일어나고 이때 실제 DB로 SQL을 날린다.persist 할 때마다 쿼리를 날리든, 모아서 한번에 날리든 결국 트랜잭션 커밋이 .. 2017.03.12
EntityManager 와 EntityManagerFactory Entity Manger FactoryEntity Manger 를 생성하기 위해서는 persistence.xml의 설정 정보를 사용해서 Entity Manger Factory를 먼저 생성해야한다.EntityManagerFactory emf = Psersistence.createEntityManagerFactory("name");Entity Manager Factory 생성 비용은 굉장히 크기 때문에, 애플리케이션 전체에 걸쳐 한 번 생성하고 재사용 해야 한다.Entity Manager Entity Manager Factory 에서 Entity Manager를 생성한다.EntityManager em = emf.createEntityManager();JPA 대부분의 기능은 Entity Manger 가 제공한.. 2017.03.12
Persistence Context 영속성 컨텍스트 Persistence Context - 영속성 컨텍스트영속성 컨텍스트는 엔티티 매니저를 생성할 때 같이 만들어 지며 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있다. 즉, 엔티티 매니저가 하는 어떤 행위는 영속성 컨텍스트에 반영되고 이것이 최종적으로 DB에 반영된다.특징식별자 값영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다(@Id 애노테이션)데이터베이스와의 관계영속성 컨텍스트에 엔티티가 저장된다고 바로 DB에 반영되는 것이 아니라 일반적으로 트랜잭션이 커밋될 때 DB에 반영된다.(flush)영속성 컨텍스트에 엔티티를 관리할 때의 장점1차캐시동일성 보장트랜잭션이 지원되는 지연 쓰기변경 감지지연 로딩Entity Life Cyclenew / transient : 비영속 상태라고 하며 영속성 컨텍스.. 2017.03.12