목록2023/08 (17)
Rootable의 개발일기
📌 객체의 연관 관계 매핑 관계형 DB는 외래키를 통해 연관 관계를 맺는다. 다음은 관계형 DB에 맞춘 엔티티 설계다. 아래 코드를 통해 연관 관계 엔티티인 Team을 저장하면 ID 값이 저장된다. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setName("member1"); member.setTeamId(team.getId()); em.persist(member); tx.commit(); 이처럼 ID 값이 저장되기 때문에 em.find 한 번으로 객체 조회가 완료되지 않는다. try { ... Member findMember = em.find(Member.class..
📌 엔티티 매핑(@Entity) 클래스에 @Entity를 선언하면 JPA가 관리하는 엔티티가 된다. 이로 인해 JPA는 애플리케이션 로딩 및 실행 시점에 매핑할 테이블을 자동 생성한다. 즉, create, insert 등의 DDL문을 자동으로 생성한다는 것이다. 다음과 같은 제약 조건을 줄 수 있다. @Entity public class Member { @Id private Long id; @Column(nullable = true, length = 10) //null 허용x, 길이 10 이하 private String name; private int age; ... JPA는 동적으로 객체를 생성하기 때문에 기본 생성자가 필수이며, 변경이 불가능한 필드를 선언해서는 안된다. final class enum..
📌 영속성 컨텍스트(Persistence Context)란 엔티티를 영구 저장하는 환경으로 EntityManager를 통해 접근할 수 있다. 일반적으로 JPA에서는 persist 함수를 통해 해당 엔티티를 영속화(영속성 컨텍스트에 저장)한다. EntityManger.persist(entity); //entity를 영속화 💡 Spring Data JPA의 영속화 Spring Data JPA에서는 Repository를 상속받은 JpaRepository라는 인터페이스를 제공한다. Repository 인터페이스를 정의하면 해당 Entity의 데이터를 사용할 수 있는데, 이것은 내부적으로 EntityManger 가 직접 대상 Entity의 데이터를 관리하기 때문이다. 그리고 Spring Data JPA에서 Rep..
📌 ORM(Object-relational mapping) 기술 객체는 객체대로 관계형 DB는 관계형 DB대로 설계하고, ORM 프레임워크가 중간에서 매핑해 주는 식으로 동작하는 객체와 관계형 DB를 매핑해 주는 기술이다. JPA는 애플리케이션과 JDBC 사이에서 동작하며, 객체를 다루듯이 DB 리소스를 다룰 수 있도록 한다. 🔎 예제 JPA에서 하나의 테이블을 Entity 객체라고 하며, 아래와 같이 자바 코드를 통해 하나의 테이블을 설계할 수 있다. @Entity @Data public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "USERNAME") private String..