하이버네이트/JPA - 자바의 ORM.

02. 간단한 CRUD만들기

목차

일단 설명에 앞서 바로 CRUD 만들기로 돌입합니다. 크게 세가지를 보시면 됩니다.

예외처리에 대한 생각은 아직 안하고 있습니다... 일단 API에 익숙해지는데 집중을 합니다(...)
Junit으로 테스트 돌려서 Dao를 만듭니다. jUnit에 대한 감이 안오시면 부록을 보고 오셔도 됩니다. ㅎ

0. 엔티티클래스 생성

1. 세션팩토리 생성

2. 세션생성후 트랜잭션 시작과 커밋

3. 각각의 CRUD (Create , Retrieve, Update, Delete) 처리

4. 참고 혹은 영감을 받은 문서

0. 엔티티클래스 생성


@Entity // javax.persistence 에서 import 합니다. 테이블로 매핑되는
//하겠다는 뜻! 
public class Member{
    
    @Id //주키 설정
    @GeneratedValue //자동 숫자 증가 
    private int id;
    
    //파라미터가 없는 생성자 필요
    public Member() {
    }
    //그외 생략
    
}

촬영 후 잠시 설명을 안한 것같아서 적자면, 소스 막 만들었던 단축키는 에디터에서 Alt+ Shift + S 를 누르면 소스에 관한 탭이 열립니다. 

Generate Getters and Setters  (R키)

Generate Contructor Using fields (O 키)

Generate toString ( S키)

누르시면 됩니다.

이클립스에 아직 안 익숙하신 분을 위하여 한마디 적자면 Ctrl + 1 번을 본 영상에서는 많이 사용하였습니다.
마법키(?) 입니다. ㅎㅎ 이 영상 이후로는 마우스작업안하고 되도록 단축키를 단축키영창(?) 과 함께 사용합니다.

1. 하이버네이트유틸에서 세션팩토리 생성

org.hibernate.SessionFactory 에서 import

SessionFactory factory = HibernateUtil.getSessionFactory();

 

2. 세션생성후 트랜잭션 시작과 커밋

Session session = factory.getCurrentSession();
    	session.beginTransaction();
		//각각의 처리 들어갈 부분
		session.getTransaction().commit();

 

3. 각각의 CRUD (Create , Retrieve, Update, Delete) 처리

수정 삭제시 주키로 구별을 합니다.
//저장
session.save(member); 
//한개 불러오기
Member selectedMember = (Member) session.get(Member.class, id);
// 업데이트 
session.update(selectedMember);
//삭제
session.delete(updatedMember);
//리스트
Query query = session.createQuery("from Member");
List<Member> list = query.list();

 

4. 참고 혹은 영감을 받은 문서

최범균님의 TDD라이브에서 테스트 추임새(?)와 리팩토링에 대한 느낌을 얻었습니다.

http://www.youtube.com/watch?v=AE7K-16dEjo

영어지만 간단하게 HQL(Hibernate Query Language)를 설명해줍니다.

http://www.youtube.com/watch?v=Em4M2tUn1bU&index=25&list=PL5757A5DB24A40BDC

CRUD

http://www.youtube.com/watch?v=hDBQy-dWC0A&index=21&list=PL5757A5DB24A40BDC

댓글

댓글 본문
  1. 남원형
    감사합니다. 즐겁게 배우고 갑니다.
  2. 부띠크
    JUnit Test에서 Unkown entity : chap01.crud.Member 오류가 나요...

    HibernateUtil.java 에서 .addAnnotatedClass(User.class); 밑에
    cfg.addAnnotatedClass(Member.class);
    이렇게 한줄 추가해서 해결했습니다!

    저만 이런건지 모르겠지만 참고하세요~~
  3. 김호균
    감사합니다. 잘보고 있습니다.
    첫번째 영상보다는 많이 차분해 지셨네요 ^^
  4. Scratchback
    잘 보고 있습니다. 감사합니다(2)