Written by
최태열
on
on
JPA3
JPA로 entity 생성
JPA table 생성
package step01.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Member {
@Id //pk로 설정
@Column(name = "id")
private String id;
@Column(name = "name")
private String userName;
// 정수 10자리 타입 의미
@Column(precision = 10)
private int age;
}
- @Entity
- table로 매핑되는 자바 클래스
- 미 존재했던 TABLE인 경우 자동 생성
- 설정만으로 자동 생성되는 sql문장 확인
- @Entity(name=””)
- @Id
- pk 설정
- Entity 클래스 냉부에 멤버 변수 선언구에 설정(필수)
- @Column
- 멤버 변수와 매핑되는 table 컬럼 설정
- 변수명과 동일, 변수명과 다르게 설정, 컬럼의 타입정보를 속성 정보(속성명=값)로 보유
- @Column(name=”name”)
- @Column(name=”id”)
- @GengeratedValue
- PK의 값을 자동 생성하기 위함
- strategy
- GenerationType.AUTO : 특정 DB에 맞게 자동 선택
- GenerationType.IDENTIFY : DB의 identify 컬럼 이용
- GenerationType.SEQUENCE : DB의 sequence 컬럼 이용
- GenerationType.TABLE : 유일성이 보장된 db 테이블을 이용
-
generator
SequenceGenerator나 TableGenerator 에노테이션에서 명시된 PK 생성자를 재사용할 때, 쓰인다. 이미 있는 값을 가져오는 방식
- @SequenceGenerator
- Sequence 만듬
- name : generator의 이름
- sequenceName : sequence의 이름
- initialValue : 시작값
- allocationSize : 미리 준비해둔 값(default 50)
JPA CRUD
- create(insert)
Member member = new Member("id2", "신동엽2", 10);
em.persist(member); //insert 기능의 메소드, 영속성컨텍스트에저장, insert 생성, 스냅샵에 저장
Member member2 = new Member("id1", "신동", 10);
em.persist(member2); //insert 기능의 메소드, 영속성컨텍스트에저장, insert 생성, 스냅샵에 저장
- select
Member oneFindMember = em.find(Member.class, "id1"); // primary key를 활용해 하나만
List<Member> allMember = em.createQuery("select m from Member m", Member.class).getResultList(); //쿼리문 활용
- update
member.setAge(40);
- delete
em.remove(oneFindMember);
Discussion and feedback