분류 전체보기 (76) 썸네일형 리스트형 [JPA] 고급매핑 (상속관계, @MappedSuperclass) 상속관계 매핑 관계형 데이터베이스는 상속관계가 존재하지 않는다. 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하다. 상속관계 매핑 : 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 - 각각 테이블로 변환 ⇒ 조인 전략 - 통합 테이블로 변환 ⇒ 단일 테이블 전략 - 서브 타입 테이블로 변환 ⇒ 구현 클래스마다 테이블 전략 (실무사용X) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) : 테이블을 어떻게 구현할지 전략을 설정한다. - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 (default 전략) - TABLE_PER_CLASS : 구현 클.. [Kotlin] Lec02. 코틀린에서 null을 다루는 방법 Kotlin에서의 null 체크 코틀린에서는 NullPointerException을 방지하기 위해 일반적인 자료형은 null이 될 수 없도록 되어있다. null을 허용하기 위해서는 자료형 뒤에 ? 를 붙여줘야 한다. fun startsWith(str: String?): Boolean { if(str == null) { throw IllegalArgumentException("값이 null 입니다.") } return str.startsWith("A") } Safe Call과 Elvis 연산자 safeCall : null이 아니면 실행되고, null이면 실행하지 않는다. fun startsWidthA1(str: String?):Boolean? { // safe Call 연산자를 사용 return str?.. [JPA] 프록시와 연관관계 관리 프록시 em.find() vs em.getReference() em.find() : 데이터베이스를 통해 실제 엔티티 객체를 조회한다. em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체를 조회한다. 프록시 특징 실제 클래스를 상속 받아서 만들어지며, 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. 프록시 객체는 실제 객체의 참조(target)을 보관한다. 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 프록시 객체의 초기화 프록시 객체는 처음 사용할 때 한번만 초기화 된다. 프록시 객체를 초기화 할때, 프록시 객체가 실제 엔티티로 바뀌는 것이 아니다. 초기화 되면 프록시 객체를 통해.. [JPA] 상속관계 매핑 전략(@Inheritance, @DiscriminatorColumn) 상속관계 매핑관계형 데이터베이스는 상속관계가 없다.슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하다.슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법- 각각 테이블로 변환 → 조인 전략- 통합 테이블로 변환 → 단일 테이블 전략- 서브타입 테이블로 변환 → 구현 클래스마다 테이블 전략 (구조적 결함이 커 실무에서 미사용) 주요 어노테이션@Inheritance(strategy=InheritanceType.XXX)- JOINED : 조인 전략- SINGLE_TABLE : 단일 테이블 전략- TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 (실무 미사용)@DiscriminatorColumn(name="DTYPE"): 하위 클래스를 구분하는 용도의 컬럼이며 기본 값은 "D.. [JPA] 연관관계 매핑 연관관계 매핑 시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 : @ManyToOne 일대다 : @OneToMany ( 다대일을 권장 ) 일대일 : @OneToOne 다대다 : @ManyToMany (실무에서 사용안함) 단방향, 양방향 테이블 : 외래 키 하나로 양쪽 조인이 가능하며, 사실 방향이라는 개념이 존재하지 않는다. 객체 : 참조용 필드가 있는 쪽으로만 참조가 가능하며, 한쪽만 참조시 양방향, 양쪽을 참조시 양방향이다. 연관관계의 주인 테이블은 외래 키 하나로 두 테이블의 연관관계를 맺는다. 객체 양방향 관계는 A→B, B→A 처럼 참조가 각각 있어야 하며 둘 중 외래 키를 관리할 곳을 지정해야 한다. 연관관계의 주인 : 외래 키를 관리하는 참조 주인의 반대편 : 외래 .. [Kotlin] Lec01. 코틀린에서 변수를 다루는 방법 변수 선언 키워드 - var와 val의 차이점 var와 val은 변수의 수정가능여부(var / val)을 의미한다. var는 최초 값을 초기화 후 변경할 수 있고, val은 최초 선언 값을 초기화 후 변경이 가능하다. 변수 선언시 우선적으로 val로 선언하고 꼭 필요한 경우 var로 변경처리 하는 편이 좋다. // 코틀린은 변수에 타입을 선언해 줘야 한다. var number1:Long = 10L number1 = 5L // 또한 코틀린은 타입의 추론이 가능하다. val number2 = 10L // val(불변)의 경우 초기 값을 변경 시 오류가 발생한다. number2 = 5L Kotlin에서의 Primitive Type(원시타입) Kotlin은 Primitive Type과 reference Typ.. [JPA] 연관관계 매핑 기초 연관관계가 필요한 이유 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. 객체를 테이블에 맞추어 모델링 ⇒ 연관관계가 없는 객체 ⇒ 참조 대신 외래키를 그대로 사용 @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "username") private String name; @Column(name = "team_id") private String teamId; ... } @Entity public class Team { @Id @generatedValue @Column(name = "team_id") priv.. [노드교과서] 타입스크립트 타입스크립트는 자바 스크립트에 명시적으로 타입이 추가된 언어이다. 타입으로 인하여 자유도를 포기하지만 미리 안정성을 챙기는 언어이다. 디노(deno)라는 타입스크립트를 실행할 수 있는 런타임이 있긴 하지만 아직은 대중적이지 않다. 그러므로 타입 스크립트 코드는 tsc라는 컴파일러를 통해 자바스크립트로 변환해 노드와 함께 사용하고 있다. $ npm i typescript // tsc를 설치(타입스크립트 컴파일러) // 현재 프로젝트를 typescript project로 변경 // tsconfig.json 생성 $ npx tsc --init tsc는 type검사와 javascript변환을 담당하나 typescript에서 type오류가 발생 했더라도 javascript변환을 막진 않는다. type의 경우 ja.. 이전 1 ··· 3 4 5 6 7 8 9 10 다음