목록전체 글 (78)
공hannah부

오늘 다룰 내용 상속 관계 매핑 @MappedSuperclass 복합 키와 식별 관계 매핑 조인 테이블 엔티티 하나에 여러 테이블 매핑하기 상속 관계 매핑 조인전략 조인전략이란? 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본키 + 외래키로 사용하는 전략이다. 따라서 조회할 때 조인을 자주 사용한다. 사용시 주의사항 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없기 때문에 타입을 구분하는 컬럼을 추가해야 한다. 장점 테이블이 정규화된다. 외래 키 참조 무결성 제약조건을 활용할 수 있다. 저장공간을 효율적으로 사용한다. 단점 조회할 때 조인이 많이 사용되므로 성능이 저하될 수 있다. 조회 쿼리가 복잡하다. 데이터를 등록할 INSERT SQL을 두번 실행한..

엔티티의 연관관계를 매핑할 때 고려해야 하는 것 다중성 다대일 일대다 일대일 다대다 단방향, 양방향 연관관계의 주인 다대일 - 외래키는 항상 다쪽에 있다. 다대일 단방향 [N:1] 회원 엔티티 @Entity public class Member{ @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; } 팀 엔티티 @Entity public class Team{ @Id @GeneratedValue @Column(name="TEAM_ID") private Long id; private String name..

목표 객체의 참조와 테이블의 외래 키를 매핑하는 것! 핵심 키워드 방향: 단방향, 양방향이 있다 다중성: 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)가 있다. 연관관계의 주인: 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 객체 연관관계 vs 테이블 연관관계 객체는 참조(주소)로 연관관계를 맺는다 테이블은 외래 키로 연관관계를 맺는다 단방향 연관관계 다대일(N:1) 단방향 관계 상황 회원과 팀이 있다 회원은 하나의 팀에만 소속될 수 있다 회원과 팀은 다대일 관계다 객체 연관관계 객체는 참조를 통해 연관관계를 탐색하는데 이를 객체 그래프 탐색이라고 한다. Member member1 = new Member("memeber1","회원1"); Team team1 = ne..

@Entity Entity 속성 적용시 주의사항 기본 생성자 필수 final 클래스, enum, interface, inner 클래스에는 사용 X 저장할 필드에 final 사용 X @Table Table 속성 데이터베이스 스키마 자동 생성 이 속성을 추가하면 애플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다. hibernate.hbm2ddl.auto 속성 DDL 생성기능 스키마 자동 생성하기를 통해 만들어지는 DDL에 제약조건 추가해보기 @Column(name = "NAME", nullable = false, length = 10) nullable속성 값을 false로 지정하면 자동 생성되는 DDL에 not null 제약 조건 추가됨 length 속성 값을 사용하면 자동 생성되는 DDL에 ..

엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저: 엔티티를 저장, 수정, 삭제, 조회하는 등 엔티티와 관련된 모든 일을 처리 엔티티를 저장하는 가상의 데이터 베이스 엔티티 매니저 팩토리: 엔티티 매니저를 만드는 공장 공장을 만드는 비용은 상당히 큼 → 한개만 만들어 애플리케이션 전체에서 공유하도록 설계 공장에서 엔티티 매니저를 생성하는 비용은 거의 들지 않음 영속성 컨텍스트 영속성 컨텍스트: 엔티티를 영구 저장하는 환경 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리함 em.persist(member); → 여기서 persist() 메소드는 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장 엔티티의 생명주기 엔티티의 4가지 상태 비영속:..

이론 CI(Continuous Integratrion)란? 개발을 하면서 코드에 대한 통합을 지속적으로 진행함으로써 코드 품질을 유지하는 것 CD(Continous Delivery/Deploy)란? 배포를 자동화하여 지속적으로 배포하는 것 Github Actions + AWS CodeDeploy 아키텍쳐 구현 EC2 인스턴스 시작 EC2 tag 추가 IAM 역할 추가 - EC2 인스턴스에서 S3에 올려놓은 파일에 접근할 수 있도록 IAM(Identity and Access Management)는 AWS 리소스에 대해 엑세스를 안전하세 제어할 수 있는 웹 서비스이다. 이를 사용해 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어한다. EC2에 IAM 역할 추가 EC2에 CodeDeploy Agent 설..

Object 클래스 특징 java.lang 패키지에 포함되어있다. 모든 클래스의 슈퍼 클래스이다. 주요 메소드 boolean equals(Object obj) : obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴 Class getClass() : 현 객체의 런타임 클래스 리턴 int hashCode() : 현 객체에 대한 해시코드값 리턴 String toString() : 현 객체에 대한 문자열 표현을 리턴 void notify() : 현 객체에 대해 대기하고 있는 하나의 스레드 깨움 void notify() : 현 객체에 대해 대기하고 있는 모든 스레드 깨움 void wait() : 다른 스레드가 깨울때까지 현재 스레드를 대기 객체 비교와 equals() ==연산자 : 두개의 레퍼런스..

메이븐과 사용 라이브러리 관리 메이븐 메이븐은 간단히 말해 라이브러리르 관리해주는 도구이다. pom.xml에 사용할 라이브러리를 적어주면 라이브러리를 자동으로 내려받아 관리해준다. pom.xml 에 사용할 라이브러리를 지정해 groupId + artifactId + version만 적어주면 라이브러리를 메이븐 공식 저장소에서 내려받아 추가해준다. 핵심 라이브러리: JPA, 하이버네이트, H2 데이터베이스 객체 매핑 시작 회원 테이블 만들기 CREATE TABLE MEMBER( ID VARCHAR(255) NOT NULL, NAME VARCHAR(255), AGE INTEGER, PRIMARY KEY(ID) ) 회원 클래스 만들기 + 어노테이션 추가 package jpabook.start; import j..