ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 고급매핑 - @MappedSuperclass
    김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 22. 12:10
    반응형

    @MappedSuperclass

    아래와 같이 공통 매핑 정보가 필요 할 때 사용함

    1. 특징

        1) 공통 매핑 정보가 필요할 때 사용(id, name)

        2) 상속관계 매핑X

        3) 엔티티X, 테이블과 매핑X 

        4) 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공

        5) 조회, 검색 불가(em.find(BaseEntity) 불가) 

        6) 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장

        7) 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할

        8) 주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통 으로 적용하는 정보를 모을 때 사용

        9) @Entity 클래스는 엔티티나 @MappedSuperclass로 지 정한 클래스만 상속 가능

     

     

    2. 코드

    @Entity
    public class Team extends BaseEntity{
    	@Id
    	@GeneratedValue
    	@Column(name = "MEMBER_ID")
    	private Long id;
    
    	@Column(name = "USERNAME")
    	private String name;
    	
    	Getter(), Setter()...
    }

     

    @Entity
    public class Member extends BaseEntity {
    	@Id
    	@GeneratedValue
    	@Column(name = "MEMBER_ID")
    	private Long id;
    
    	@Column(name = "USERNAME")
    	private String name;
    	
    	private int age;
    	
        Getter(), SEtter()...
    }

     

    public class JpaStudyApplication {
    
    	public static void main(String[] args) {
    		EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
    
    		EntityManager em = emf.createEntityManager();
    
    		EntityTransaction tx = em.getTransaction();
    
    		// 트랜잭션 시작
    		tx.begin();
    
    		try {
    			Member member = new Member();
    			member.setName("김진석");
    			member.setCreateBy("Kim Jin Seok");
    			member.setCreatedDate(LocalDateTime.now());
    			
    			em.persist(member);
    			
    			tx.commit(); // [트랜잭션] 커밋
    		} catch (Exception e) {
    			tx.rollback();
    		} finally {
    			em.close();
    
    		}
    		emf.close();
    	}
    }

     

     

    3. 실행결과

     

     

     

     

     

    반응형
Designed by Tistory.