본문 바로가기

전체 글46

연관관계 매핑 객체 연관관계 (2개) 회원 -> 팀 연관관계 1개(단방향) 팀 -> 회원 연관관계 1개(단방향) 객체의 양방향 관계는 서로 다른 단방향 관계 2개 객체는 참조를 사용해서 연관된 객체를 찾음 객체를 양방향으로 참조하려면 단방향 연관관계 2개를 만들어야 함 테이블 연관관계 (1개) 회원 팀 연관관계 1개(양방향) 테이블 양방향 연관관계는 외래키 하나로 두 테이블의 연관관계를 관리 테이블은 외래키로 조인을 사용해서 연관된 테이블을 찾음 단방향 @ManyToOne : 해당 클래스가 N, 연관된 클래스가 1 양방향 @OneToMany(mappedBy = "연결된 엔티티의 연결된 변수명") mappedBy : 나는 매핑이 되었다는 뜻으로 주인인이 아님을 명시 연관관계 주인 객체 양방향 연관관계는 관리 주인이 필요.. 2023. 12. 19.
엔티티 매핑 @Entity 엔티티 : DB 테이블에 대응하는 하나의 클래스 해당 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티 주의 사항 기본 생성자 필수(public, protected) final 클래스, enum, interface, inner 클래스에 사용 불가 저장할 필드에 final 사용 불가 @Table 엔티티와 매핑할 테이블 지정 @Table(name = "테이블 명") : 기본은 클래스 명과 동일 @Column 클래스 내의 필드와 테이블 컬럼 매핑 @Column(name = "테이블에서 매핑될 컬럼 명") 속성 name : 필드와 매핑할 테이블의 컬럼 이름 insertable, updatable : 등록, 변경 가능 여부 (default : true) nullable : null 값 허용 여부.. 2023. 8. 25.
영속성 관리 영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManger.persist(entity); 논리적인 개념으로 눈에 보이지 않음 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 내부에 1차 캐시, 쓰기 지연 SQL 존재 엔티티 생명주기 비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 영속성 컨텍스트에 관리되는 상태로 영속성 컨텍스트 안에 객체가 들어간다고 생각 em.persist 이후 바로 데이터베이스 쿼리가 나가는 것이 아닌, commit 순간에 영속성 컨텍스트 안의 객체가 데이터베이스로 날아감 준영속 영속성 컨텍스트에서 분리된 상태(detached) 영속성 컨텍스트가 제공하는 기능을 사용 못함(commit 등) em.detach(entity) : 해당 entity를 준영속 상태로 만듬.. 2023. 8. 22.
JPA(Java Persistence API)란 JPA JAVA 진영의 ORM 기술 표준으로 사용되는 인터페이스 모음으로 구현된 클래스와의 매핑을 위해 사용되는 프레임워크 ORM(Object Relational Mapping) 객체와 데이터베이스를 매핑해 주는 기술 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계 ORM 프레임워크가 중간에서 매핑 역할 Hibernate 대표적인 JPA를 구현한 구현체 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현 JPA 사용 이유 SQL 중심적인 개발에서 객체 중심적인 개발이 가능. 즉, 반복적인 CRUD 작업이 필요가 없음 생산성 em.persist(member) // 저장 Member member = em.find(memberId) // .. 2023. 8. 17.