JPA 5

[JPA 프로그래밍] - 07. 고급 매핑

상속관계 매핑• 관계형 데이터베이스는 상속 관계가 없다.• 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사함• 상속관계 매핑: 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 관련 어노테이션@Inheritance(strategy=InheritanceType.XXX)JOINED : 조인 전략SINGLE_TABLE : 단일 테이블 전략TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE")DTYPE은 운영상 있는것을 추천 @DiscriminatorValue("XXX") : 자식 테이블을 구분하는 DTYPE을 테이블 이름이 아닌 임의로 주고싶을 때, 이 어노테이션을 자식 클래스에 사용한다. 슈퍼타입 서브타입 논리 모델을 실..

JPA 2024.05.08

[JPA 프로그래밍] - 06. 다양한 연관관계 매핑

다대일05. 게시글 참조https://swdy1233.tistory.com/256 [JPA 프로그래밍] - 05. 연관관계 매핑 기초단방향 매핑예제 시나리오• 회원과 팀이 있다.• 회원은 하나의 팀에만 소속될 수 있다.• 회원과 팀은 다대일 관계다. @Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") pswdy1233.tistory.com 일대다 비추천a를 수정했는데 b테이블에 업데이트 쿼리가 나가고, 이는 테이블이 많은 운영 환경에서는 혼란을 야기할 수 있으므로 바람직한 방법이 아님.일대다 단방향, 일대일 양방향 매핑보다는 trade off가 있어도 다대일 양방향 매핑을 사용하자!  일대일..

JPA 2024.05.06

[JPA 프로그래밍] - 05. 연관관계 매핑 기초

단방향 매핑예제 시나리오• 회원과 팀이 있다.• 회원은 하나의 팀에만 소속될 수 있다.• 회원과 팀은 다대일 관계다. @Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age; // @Column(name = "TEAM_ID") // private Long teamId @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; //팀 저장Team team = new Team();team.setName("Team..

JPA 2024.04.28

[JPA 프로그래밍] - 04. 엔티티 매핑

객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의점 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) DB에 저장할 필드에 final 사용 불가 final 클래스, enum, interface, inner 클래스는 @Entity로 맵핑할 수 없음 @Entity 속성 name @Entity(name="anotherMember") JPA에서 사용할 엔티티 이름을 지정 기본값은 클래스 이름을 그대로 사용(예: Member) 중복되는 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 ..

JPA 2024.04.06

[JPA 프로그래밍] - 03. 영속성 관리

영속성 컨텍스트란 엔터티를 영구 저장하는 환경 이라는 뜻 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. EntityManager.persist(entity) -> 엔티티를 영속성 컨텍스트에 저장한다는 뜻!! 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속(managed) 영속성 컨텍스트에 관리되는 상태, 1차 캐시에서 관리되는 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); mem..

JPA 2024.03.02