데이터베이스(must-have skills)/ORM_JPA
자바 ORM 표준 JPA 프로그래밍 정리 - 2장 시작 (작성중)
트밀
2022. 7. 7. 20:15
목차
- 이론
- 소개
- 2. 시작
- 영속성관리
- 엔티티 매핑
- 연관관계 매핑 기초
- 다양한 연관관계 매핑
- 고급 매핑
- 프록시와 연관관계 관리
- 값타입
- 객체지향 쿼리 언어
- 실무
- 스프링 데이터JPA
- 웹 어플리케이션과 영속성 관리
- 고급주제
- 컬렉션과 부가기능
- 고급주제와 성능최적화
- 트랜잭션과 락, 2차캐시
2.1 이클립스 설치와 프로젝트 불러오기
2.2 H2 데이터베이스 설치
2.3 라이브러리와 프로젝트 구조
2.4 객체 매핑 시작
2.5 persistence.xml 설정
2.6 애플리케이션 개발
2.7 정리
2.1 이클립스 설치와 프로젝트 불러오기
2.2 H2 데이터베이스 설치
2.3 라이브러리와 프로젝트 구조
2.4 객체 매핑 시작
2.5 persistence.xml 설정
2.6 애플리케이션 개발
2.7 정리
2.1 이클립스 설치와 프로젝트 불러오기
본인은 IntelliJ로 할 예정
2.2 H2 데이터베이스 설치
본인은 그냥 바로 Mysql로 할 예정
2.3 라이브러리와 프로젝트 구조

2.3.1 Main클래스
package jpabook.start;
import javax.persistence.*;
import java.util.List;
/**
* @author holyeye
*/
public class JpaMain {
public static void main(String[] args) {
//엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성
EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득
try {
tx.begin(); //트랜잭션 시작
logic(em); //비즈니스 로직
tx.commit();//트랜잭션 커밋
} catch (Exception e) {
e.printStackTrace();
tx.rollback(); //트랜잭션 롤백
} finally {
em.close(); //엔티티 매니저 종료
}
emf.close(); //엔티티 매니저 팩토리 종료
}
public static void logic(EntityManager em) {
String id = "id1";
Member member = new Member();
member.setId(id);
member.setUsername("지한");
member.setAge(2);
//등록
em.persist(member);
//수정
member.setAge(20);
//한 건 조회
Member findMember = em.find(Member.class, id);
System.out.println("findMember=" + findMember.getUsername() + ", age=" + findMember.getAge());
//목록 조회
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
System.out.println("members.size=" + members.size());
//삭제
em.remove(member);
}
}
import javax.persistence.*; //**
/**
* User: HolyEyE
* Date: 13. 5. 24. Time: 오후 7:43
*/
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String username;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
2.* enumType Mapping 가능(JPA 2.0초과버전만) . 1
@Enumerated Annotation
1번방식은 메모리가 많이들고 순서가 중요해서 db 일관성이 깨지기 쉬움.
1-1.ordinal(@Enumerated(EnumType.ORDINAL)
JPA각 자동으로 호출( Enum.ordinal())
예제코드
Article article = new Article();
article.setId(1);
article.setTitle("ordinal title");
article.setStatus(Status.OPEN); //OPEN, REVIEW, APPROVED, REJECTED; enum의순서에 따라 문제가될수도
1-2.String @Enumerated(EnumType.STRING):
2번방식(콜백 메서드)
Using @PostLoad and @PrePersist Annotations
2.4 객체 매핑 시작
이것도 나만의
2.5 persistence.xml 설정
이것도 나만의
2.6 애플리케이션 개발
이것도 나만의
2.7 정리
이것도 나만의