본문 바로가기
728x90
반응형

자바/JPA30

[JPA/JAVA] 다양한 연관관계 매핑 (N:1, 1:N, 1:1, N:M) 연관관계 매핑 시 고려사항 3가지가 있다 - 다중성에 있어서 어떤 관계인지 - 단방향인지, 양방향인지 - 연관관계의 주인은 누구인지 다중성은 4가지의 관계가 있다 - 다대일(N:1) : @ManyToOne - 일대다(1:N) : @OneToMany - 일대일(1:1) : @OneToOne - 다대다(N:M) : @ManyToMany 단방향, 양방향 관계에 있어서 - 테이블 : 외래 키 하나로 양쪽 조인이 가능하다. : 원래 방향이라는 개념은 없다 - 객체 : 참조용 필드가 있는 쪽으로만 참조가 가능하다 : 한쪽만 참조하면 단방향이고 : 양쪽이 서로 참조하면 양방향이다. 연관관계의 주인은 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 객체의 양방향 관계는 A → B, B → A 처럼 참조가 2군.. 2023. 2. 20.
[JPA/java] 연관관계 매핑 (단방향, 양방향, 객체, 테이블, 기본키, 외래키 등) 연관 관계에 대한 예를 들기 위해서, 하나의 예를 들어보자. 1) 회원과 팀이 있는데, 2) 회원은 하나의 팀에만 소속될 수 있고, 3) 회원과 팀은 N:1관계이다. 연관 관계가 없는 객체를 테이블에 맞춰 모델링을 하면 아래와 같이 표현할 수 있다. 이것을 소스코드로 표현하면 아래와 같다. (Getter and Setter 생략) Member.java @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; } Team.java @Entity public class Team .. 2023. 1. 25.
[JPA/Java] 엔티티 매핑 (객체, 테이블, 필드, 컬럼, 기본 키 등) 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하고, 이를 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 필수로 붙인다. ※ 주의 → 기본 생성자를 필수로 한다. (파라미터가 없는 public 또는 protected 생성자) → final 클래스, enum, interface, inner 클래스 사용하지 않음 → 저장할 필드에 final 사용하지 않음 @Entity 속성 정리 - 속성 : name : JPA에서 사용할 엔티티 이름을 지정한다. : 기본값 - 클래스 이름을 그대로 사용(예 : Me.. 2023. 1. 22.
[JPA/JAVA] 플러시 & 준영속 상태 플러시란? : 영속성 컨텍스트의 변경내용을 데이터베이스에 반영 플러시가 발생하는 때는? - 변경을 감지할 때 - 수정된 엔티티를 쓰기 지연 SQL 저장소에 등록할 때 - 쓰기 지연 SQL 저장소의 쿼리(등록, 수정, 삭제 쿼리)를 데이터베이스에 전송할 때 영속성 컨텍스트를 플러시하는 방법은 3가지가 있는데 - em.flush() -- 직접 호출 - 트랜잭션 커밋 -- 플러시를 자동 호출 - JPQL 쿼리 실행 -- 플러시를 자동 호출 가 있다. 직접 호출하는 em.flush()의 경우 Member member = em.find(Member.class, 150L); member.setName("ZZZZ"); em.flush(); System.out.println("=================="); 원.. 2023. 1. 12.
[JPA/JAVA] 영속성 컨텍스트 영속성 컨텍스트는 JPA에서 나오는 개념이다 JPA를 이해하기 위해서는 가장 중요한 2가지 개념이 있는데 하나는 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 두 번째는 바로 영속성 컨텍스트가 있다. 영속성 컨텍스트를 이해하는 것이 실제로 JPA가 내부에서 실제로 어떻게 동작하는지 이해하는데 가장 큰 중요한 대목이 될 것이다. 영속성 컨텍스트를 이해하기 위해서는 엔티티의 영속을 관리하는 엔티티 매니저와 엔티티 매니저를 관리하는 엔티티 매니저 팩토리를 이해할 필요가 있다. 엔티티 매니저 팩토리는 들어오는 요청에 따라 엔티티 매니저를 생성한다. 그리고 엔티티 매니저는 영속을 위해 데이터베이스와 연결하기 전, 커넥션 풀을 사용하여 영속을 준비한다 (persist) 영속성 .. 2023. 1. 11.
[Java/JPA] JPA 개념 JPA(Java Persistence API')는 자바 ORM 기술에 대한 API 표준이다. ORM이란, 'Object Relational Mapping'의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말한다. ORM 기술이 등장한 계기는? 1) 개발자가 SQL을 매핑하는 역할을 반복해야함 : 자바 객체를 SQL을 통해 데이터베이스에 관리하게 하고, 데이터베이스에 저장된 데이터를 자바 애플리케이션에서 사용하려면 SQL을 통해 다시 자바 객체로 변환하는 반복적인 작업 2) 객체와 관계형 데이터베이스의 패러다임의 불일치 : 자바는 객체지향 패러다임, 관계형 데이터베이스는 데이터를 정규화해서 잘 보관하는 것을 목표로 함. : 객체를 DB에 넣기 위해서는 SQL 문을 통해 변환해서 저장, 데이터베이스에서.. 2021. 10. 15.
728x90
반응형