티스토리 뷰

JPA

[JPA] 기초와 매핑

tonirr 2020. 5. 27. 03:06
    • @Entity

      • JPA가 관리할 객체

    • @ID

      • DB PK와 매핑할 필드

    • persistence.xml

      • JPA 설정 파일

      • /META-INF/persistence.xml 위치

      • javax.persistence로 시작: JPA 표준 속성

      • hibernate로 시작: 하이버네이트 전용 속성

    • 데이터베이스 방언

      • JPA는 특정 데이터베이스에 종속적이지 않은 기술

      • 각각의 데이터베이스가 제공하는 SQL문법과 함수는 조금씩 다름

        • 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2

        • 문자열을 자르는 함수: SQL 표준은 substring(), Oracle은 substr()

        • 페이징: MySQL은 LIMIT, Oracle ROWNUM

      • 방언: SQL 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능

 

  • 주의

    • 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유

    • 엔티티 매니저는 쓰레드간에 공유하면 안된다(사용하고 버리기)

    • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행

    // 서버시작시에 EntityManagerFactory생성
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
    
    // EntityManagerFactory에서 사용자가 요청할 때마다 EntityManager동작
    EntityManager em = emf.createEntityManager();
    
    // EntityManager를 통해 Transaction 처리
    EntityTransaction tx = em.getTransaction();
    // Transaction 시작
    tx.begin();
    
    // try catch문 안에서 로직이 돌고 에러가 발생하면 Transaction 을 롤백
    try{
        Member member = new Member();
        member.setId(1L);
        member.setName("hello");
        
        em.persist(member);
        
        tx.commit();
    }catch(Exception e){
        tx.rollback();
    }finally{
        // EntityManaver는 꼭 닫는다.
        em.close();
    }
    // EntityManaverFactory는 꼭 닫는다.
    emf.close();

'JPA' 카테고리의 다른 글

[JPA] 필드와 컬럼 매핑  (0) 2020.05.27
JPA(Java Peresistance API)  (0) 2020.04.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함