인프런 김영한 강의 정리

1. 연관관계 매핑 시 고려사항 3가지- 다중성 - 단방향 vs 양방향 - 연관관계의 주인 2. 다양한 연관관계✔️다중성데이터베이스 관점에서 보면 됨 - 다대일(N:1) : @ManyToOne - 일대다(1:N) : @OneToMany - 일대일(1:1) : @OneToOne - 다대다(N:M) : @ManyToMany 실무에서 다대다는 쓰면 안됨. ✔️다대일 단방향(N:1) N쪽이 외래키를 가지고 있어야하고 외래키를 가지고 있는 쪽을 연관관계 주인으로 지정해줘야한다. ✔️일대다(1:N)1이 연관관계 주인이다.Q. 그동안 배웠던거랑 다른 내용이라 헷갈림 N쪽이 외래키를 가지고 있어야 설계상 맞는거고 외래키를 가지고 있는 쪽을 연관관계 주인으로 지정해주라했는데 왜 1이 연관관계 주인이 될 수 있는 거지? ..
1. 단방향 연관관계 복습2024.06.13 - [인프런 김영한 강의 정리/자바 ORM 표준 JPA 프로그래밍 기본편] - JPA 기본 | 연관관계 매핑 기초 JPA 기본 | 연관관계 매핑 기초1. 객체를 테이블에 맞춰 데이터 중심으로 모델링 했을 때 이 방식으로 모델링을 하면 객체지향과 거리가 멀어진다. 왜 객체의 참조와 외래키를 매핑해야되는지 예시를 보며 이해해보자. Memberururuwave.tistory.com member와 team이 있다.member는 하나의 team에 소속될 수 있다. 단방향 연관관계 Member 엔티티에 @ManyToOne, @JoinColumn으로 Team을 매핑해줬다.@Entity@Getter@Setterpublic class Member { @Id @Gen..
1. 객체를 테이블에 맞춰 데이터 중심으로 모델링 했을 때 이 방식으로 모델링을 하면 객체지향과 거리가 멀어진다. 왜 객체의 참조와 외래키를 매핑해야되는지 예시를 보며 이해해보자. Member와 Team은 N:1 관계라고 하자. ✅Memberpackage hellojpa;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String usernam..
🤔DB 연결 오류 문제이전 강의까지는 계속 jdbc:h2:tcp://localhost/~/test로 접속했었다.접속 오류가 없었어서 무난히 강의를 듣던 중, 강사님을 따라 해봐도 jpashop 데이터 베이스 접속이 안되는 문제 발생!강사님은 이렇게 persistence.xml 파일에 url 마지막 주소값을 jpashop으로만 바꾸고 H2 콘솔에서 url을 그대로 치니까 접속이 잘됐다. 그런데 나는 아래와 같이 접속 에러가 나는 게 아닌가ㅠㅠㅠ  일단 에러를 보니 Database에 jpashop을 찾을 수 없다고 뜬다. 💡원인을 파악해보니 h2 1.4.198 이후 버전은 데이터베이스를 자동 생성해주지 않기 때문에 직접 데이터베이스를 생성해줘야한다고 한다. 다른 블로그 글을 참고해서Generic H2 (..
1. 직접 할당@Id만 사용한다. ✅예시@Idprivate String id; 2. 자동 생성@GeneratedValue 애노테이션과 strategy 속성으로 GenerationType을 세팅해야한다.타입 종류설명IDENTITY기본키를 자동으로 증가시킨다. SEQUENCEDB 시퀀스를 사용하여 기본키를 생성한다. @SequenceGenerator를 사용하여 시퀀스를 정의해야한다.ex) Oracle, PostgreSQL, DB2, H2, MariaDB, SQL Server 사용가능TABLE별도의 키 생성용 테이블을 사용하여 기본키 값을 생성한다. @TableGenerator를 사용하여 테이블을 정의해야한다.모든 DB에 적용이 가능하다.AUTO방언(DB 문법)에 따라 자동 지정, 기본값이다.✔️ IDENTI..
1. 필드와 컬럼 매핑 예제1) Member 클래스package hellojpa;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.util.Date;@Entity@Table(name="member")@Getter@Setterpublic class Member { @Id private Long id; @Column(name = "name") //객체명은 username인데, DB 컬럼명은 name일때 private String username; private Integer age; @Enumerated(EnumType.STRING) //사용자를 회원과 관리자로 구분한다. ENU..
데이터 스키마 자동 생성의 속성persistence.xml 설정 파일에 가보면 데이터 스키마 자동 생성 옵션이 있다. (현재 프로젝트 maven 기준) * 속성 종류옵션설명운영서버개발 초기 단계테스트 서버create기존 테이블 삭제(DROP) 후 다시 생성(CREATE)XO create-dropCREATE 후 종료시점에 테이블 DROPX  update변경된 내용만 반영XOO (비권장)validate엔티티와 테이블이 정상 매핑 되어있는지만 확인O Onone사용하지 않음(옵션 자체를 주석처리 해도 됨)O   운영 장비에는 create, create-drop은 데이터가 다 날아가니까 절대 사용하면 안된다.운영서버에 update를 하면 안되는 이유는 대량의 데이터를 가진 시스템에 자동으로 ALTER 명령어를 날..
@Entity- JPA가 관리하는 엔티티 클래스 - JPA를 사용해서 테이블과 매핑할 클래스는 무조건 @Entity를 써야한다. ⭐기본 생성자가 필수다.(파라미터가 없는 생성자)JPA는 기본 생성자를 통해 객체를 생성한 후, 각 필드에 값을 세팅한다. ⭐final, enum, interface, inner 클래스를 사용할 수 없다.-> JPA는 엔티티 객체를 독립적으로 관리하고 인스턴스화가 가능해야한다. ▪️ JPA는 엔티티 객체를 상속받아서 프록시 객체를 생성한다.final 클래스는 상속을 받을 수 없으므로 사용할 수 없다 ▪️  enum는 고정 상수 집합으로 개별 인스턴스를 가지지 않기 때문에 사용할 수 없다. ▪️  interface는 인스턴스화를 할 수 없기 때문에 사용 불가▪️  inner 클래..
백엔드 개발자 - 젤리곰
'인프런 김영한 강의 정리' 카테고리의 글 목록 (4 Page)