목록Spring (78)
빙응의 공부 블로그

📝연관관계 매핑시 고려사항 연관관계 매핑시 고려사항은 3가지이다. 다중성 다대일, 일대다, 일대일, 다대다 관계를 말한다. 단방향, 양방향 참조를 어느쪽이 하고 있는 가를 말한다. 테이블은 외래 키 하나로 양쪽 조인이 가능하나 객체는 연관을 맺기 때문이다. 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 그렇기에 연관관계의 주인을 지정해야한다. 주인이 아닌 것은 외래 키에 영향력이 없으며 조회만 가능하다. 📝다대일 : @ManyToOne 다대일 단방향 다대일에서 다쪽이 연관관계 주인인 관계이다. 가장 많이쓰는 관계 바로 전 포스팅에서 했던 방법으로 대부분의 상황에서 이 관계를 채택한다. 다대일 양방향 외래 키가 있는 쪽이 연관관계의 주인으로 양쪽을 서로 참조하도록 개발하는 것이다..

📝연관 관계 매핑 객체와 테이블의 연관관계는 차이점이 있다. 객체의 참조와 테이블의 외래 키 같은 것 말이다. 이 포스팅에서는 서로 다른점과 방법을 알아볼 것이다. 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. 객체를 테이블에 맞추어 모델링 해보자(연관 관계가 없는 객체) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; } @Entity public class Team { @Id @GeneratedValue private Long id; pr..

📝엔티티 매핑 JPA의 엔티티를 관리하기 위한 매핑에 대해 알아보자 엔티티 매핑은 4가지가 존재한다. 매핑 애노테이션 객체 매핑 @Entity 테이블 매핑 @Table 컬럼 매핑 @Column 필드 매핑 @Temporal,@Enumerated, @Lob, @Transient 기본키 매핑 @Id 연관관계 매핑 @ManyToOne, @JoinColumn 객체 매핑 - @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티가 된다. 속성 @Entity(name = "") : JPA에서 사용할 엔티티 이름을 지정할 수 있다. 테이블 매핑 - @Table @Table은 엔티티와 매핑할 테이블을 지정할 수 있다. 속성 name : 매핑할 테이블 이름 catalog : 데이터베이스 catalog 매핑 ..

✔JPA에서 가장 중요한 2가지 JPA에서 가장 중요한 것은 무엇일까? 크게 2가지로 꼽을 수 있다!!! 객체와 관계형 데이터베이스 매핑 영속성 컨텍스트 이번 포스팅에서는 영속성 컨텍스트에 대해 알아볼 것이다. 📝영속성 컨텍스트 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어이다. 의미는 "엔티티를 영구 저장하는 환경"이다. 정확히는 객체의 상태를 추적 관리하는 것이다. 영속성 컨텍스트는 논리적 개념이라 눈에 보이지 않는다. 위의 개념을 쉽게 설명하면 트랜잭션처럼 커밋 전까지 영속성 컨텍스트가 변경된 엔티티를 관리하는 것이다. 즉 트랜잭션의 Partially Committed(부분완료)처럼 커밋 전의 변경 사항을 유지하고 관리하는 역할이다. 엔티티의 생명 주기 영속성 컨텍스트는 엔티티의 생명주기로..

📝앤티티 매니저 팩토리를 이용한 JPA 사용해보기 사용 주의사항 엔티티 매니저 팩토리는 하나만을 생성해서 애플리케이션 전체에서 공유해야한다. 엔티티 매니저는 쓰레드간에 공유를 하지 않는다. 사용하고 버려야 한다. JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다. 테이블(엔티티) 정의하기 @Entity @Getter @Setter public class Member { //JPA에서 기본키는 따로 지정해줘야 한다. @Id private Long id; private String name; } CRUD 실습해보기 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //앤티티 매니저 EntityManager em = em..

📝SQL 개발의 문제점 현재 우리는 관계형 데이터베이스 세상에 살고 있다. 거의 모든 DB는 관계형으로 관리하고 있다. 이러한 관계형 DB를 제어, 관리하는 것이 수많은 SQL 문을 사용해야 한다. CRUD INSERT INTO UPDATE SET SELECT FROM DELETE FROM 문제점 1 - 개발 과정의 불편성 한번 예시로 들어보자 public class Member { private String memberId; private String name; } INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES ... SELECT MEMBER_ID, NAME FROM MEMBER UPDATE MEMBER SET ... 이렇게 개발이 완료 되었을 때 하나의 요구사항이 추가 ..