목록BE (354)
오봉이와 함께하는 개발 블로그
필드와 컬럼 매핑 아래와 같은 가정을 해보자 회원은 일반 회원과 관리자로 구분해야 한다. 회원 가입일과 수정일이 있어야 한다. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다. @Entity @Getter @Setter public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STRING) private RoleType roleType; @Temporal(TemporalType.TIMESTAMP) private Date createdDate; @Temporal(TemporalType.TIMESTAMP)..
객체와 테이블 매핑 JPA에서 객체와 테이블을 매핑해야 한다. 총 4개의 매핑을 해야 하는데 아래와 같이 나뉜다. 엔티티 매핑 객체와 테이블 매핑 @Entity @Table 필드와 컬럼 매핑 @Column 기본 키 매핑 @Id 연관관계 매핑 @ManyToOne @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하고 엔티티라 한다. 그래서 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수로 붙어야 한다. 주의사항 파라미터가 없는 public 혹은 protected 생성자는 꼭 있어야 한다. 이는 JPA가 다양한 기술을 사용하기 때문이다. 또, final 클래스나 enum, interface, inner 클래스는 사용할 수 없다. 마지막으로 DB에 저장할..
풀러시 플러시란 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것이다. 플러시가 발생하면 자동으로 변경 감지하고 수정된 엔티티 쓰기 지연 SQL 저장소에 등록하며, 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송한다. 플러시를 한다고 해서 1차 캐시가 삭제되지는 않는다, 단지 플러시는 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송하는 역할을 한다. 영속성 컨텍스트를 플러시 하는 방법 em.flush() 직접 호출 트랜잭션 커밋 플러시 자동 호출 JPQL 쿼리 실행 플러시 자동 호출 JPQL 실행시 자동으로 플러시가 호출되는 이유는 앞서 persist한 객체가 있고, 해당 객체를 JPQL로 조회할 경우를 대비하는 것이다. 해당 객체를 영속성 컨텍스트에 등록은 했지만 DB에 값이 들어간 상태는 아니기 때문에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3pUdq/btrFvVq8HcU/VV8WrjI7uyKLoQmtnRU1EK/img.png)
영속성 컨텍스트 1 JPA에서 가장 중요한 두 가지를 꼽자면 객체와 관계형 데이터베이스 매핑(ORM)과 영속성 컨텍스트가 있을 것이다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리에서 고객이 요청할 때 마다 엔티티 매니저를 생성한다. 생성된 엔티티 매니저는 커넥션 풀을 통해 DB를 사용한다. 영속성 컨텍스트 영속선 컨텍스트는 JPA를 이해하는데 가장 중요한 용어다. 영속성 컨텍스트란, 엔티티를 영구 저장하는 환경이라 한다. 예를 들면 EntityManaget.persist(entity)를 통해 DB에 저장한다 생각하지만 실제로는 아니다. persist는 영속성 컨텍스트를 통해 entity를 영속화 한다는 뜻이다. 즉, 영속성 컨텍스트에 저장하는 것이다. 영속성 컨텍스트는 논리적 개념이며 눈..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KJbah/btrFhCmAX7d/avXpjHmJiDfN29rhov72rK/img.png)
세팅 메이븐 프로젝트를 사용 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.200 javax.xml.bind jaxb-api 2.3.1 org.projectlombok lombok RELEASE compile JPA 설정을 위해서는 persistence.xml이 필요하다 resources/META-INF/persistence.xml JPA 구동 방식 각각의 DB가 제공하는 SQL의 문법과 함수는 다르지만 JPA는 특정 DB에 종속하지 않는다 // persistence.xml에 있는 속성 // EntityManagerFactory emf = Persistence.createEntityManagerFactory("값"); E..