@MappedSuperclass

Mina ParkΒ·2022λ…„ 9μ›” 10일
0
  • 곡톡 맡핑 정보가 ν•„μš”ν•  λ•Œ μ‚¬μš©
  • 상속관계 맡핑이 X
  • μ—”ν‹°ν‹°κ°€ X => ν…Œμ΄λΈ”κ³Ό λ§΅ν•‘λ˜μ§€ X
  • λΆ€λͺ¨ 클래슀λ₯Ό μƒμ†λ°›λŠ” μžμ‹ ν΄λž˜μŠ€μ— λ‹¨μˆœνžˆ 맡핑 μ •λ³΄λ§Œ 제곡
    • em.find(BaseEntity.class, id) 와 같은 μ‘°νšŒκ°€ λ‹Ήμ—°νžˆ μ•ˆλ¨
  • μΆ”μƒν΄λž˜μŠ€λ‘œ 생성할 것을 ꢌμž₯
    • 직접 μƒμ„±ν•΄μ„œ μ‚¬μš©ν•  일이 μ—†μœΌλ―€λ‘œ
  • ν…Œμ΄λΈ”κ³Ό 관계가 μ—†μœΌλ©° λ‹¨μˆœνžˆ μ—”ν‹°ν‹°κ°€ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 맡핑정보λ₯Ό λͺ¨μœΌλŠ” μ—­ν• 
    • DBμ—λŠ” 각 ν•„λ“œκ°€ λ”°λ‘œ μ‘΄μž¬ν•˜κ³  객체 섀계상 μ†μ„±λ§Œ μƒμ†λ°›μ•„μ„œ μ“°κ³  싢은 경우
    • 주둜 "λ“±λ‘μž, 등둝일, μˆ˜μ •μž, μˆ˜μ •μΌ"κ³Ό 같이 전체 μ—”ν‹°ν‹°μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ μš©ν•˜λŠ” 정보 λͺ¨μ„ λ•Œ μ‚¬μš©
      πŸ“Œκ°’μ„ 직접 넣을 ν•„μš” 없이 λ‚˜μ€‘μ— 이벀트 톡해 μžλ™μœΌλ‘œ μΆ”κ°€ κ°€λŠ₯
      • EX) λ“±λ‘μž/μˆ˜μ •μž: 둜그인 μ„Έμ…˜μ—μ„œ 값을 λ°›μ•„ μΆ”κ°€, 등둝일/μˆ˜μ •μΌ: ν˜„μž¬μ‹œκ°μœΌλ‘œ μΆ”κ°€

[μ°Έκ³ ] @Entity(상속관계 맡핑), @MappedSuperclass(μ†μ„±λ§Œ 상속)둜 μ§€μ •λœ 클래슀만 JPAμ—μ„œ 상속 κ°€λŠ₯

@MappedSuperclass //λ§΅ν•‘μ •λ³΄λ§Œ λ°›λŠ” λΆ€λͺ¨ν΄λž˜μŠ€
public abstract  class BaseEntity {

    private String createdBy;
    private String updatedBy;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}
@Entity
public class MemberMapping extends BaseEntity {

    @Id
    @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;

    @Column(name = "USERNAME")
    private String username;

    @ManyToOne(fetch = FetchType.LAZY) //쿼리 뢄리
    @JoinColumn(name = "TEAM_ID")
    private TeamMapping team;

    @OneToOne
    @JoinColumn(name = "LOCKER_ID")
    private Locker locker;

    @OneToMany(mappedBy = "member")
    private List<MemberProduct> memberProductList = new ArrayList<>();
}
public class jpaMainMapping {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try {

            MemberMapping member = new MemberMapping();
            member.setUsername("member1");
            
            //baseEntity κ°’ μ‚¬μš©
            member.setCreatedAt(LocalDateTime.now()); 
            member.setCreatedBy("kim");
            
            em.persist(member);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }

        emf.close();
    }
}

0개의 λŒ“κΈ€