기초
-
[JS] Map, Filter, Reduce기초/자바스크립트 2022. 12. 17. 02:53
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ *custom Map 함수 /** f : 맵 속성을 위임할 함수 iter : 이터러블을 반환하는 제너레이터 function : 이터러블을 받아 맵을 생성하는 함수 **/ const map = (f, iter) => { let res = []; for (const a of iter) { res.push(f(a)); } return res; }; *원하는 value만 맵으로 생성 console.log(map(p => p.name, products)); console.log(map(p => p.price, products)); /** let names = []; for (const p of products) { names.push(p.name)..
-
[JS] 제너레이터기초/자바스크립트 2022. 12. 17. 00:40
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일반함수 이름에 *을 붙여 제너레이터 함수를 만든다 제너레이터 함수 : 이터레이터를 만들어준다. 마지막 return 값은 done을 할 때 반환되는 값이다. function *func() { yield 1; if ( false ) yield 2; yield 3; } 제너레이터는 문장을 순회할 수 있는 값으로 만들 수 있다. 제너레이터를 통해 순회할 수 있는 이터러블을 쉽게 만들 수 있다. //제너레이터 코드를 이용한 홀 수 이터러블 만들기 //1씩 무한하게 증가시키는 함수 function* infinity(i = 0) { while (true) yield i++; } //1씩 무한하게 감소시키는 함수 function* infinity2(i..
-
[JS] 일급 함수와 고차함수기초/자바스크립트 2022. 12. 14. 19:04
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일급함수 - 함수를 값으로 다룰 수 있다. - 조합성과 추상화의 도구이다. - 함수가 값으로 다뤄질 수 있다. 고차함수 - 함수를 값으로 다루는 함수 - 함수를 인자로 받아서 실행하는 함수 -일급함수 예제 const inc = x = x + 1; log( inc ); // x = x + 1 log( inc(10) ); // 11 const func1 = () = () => 1; const func2 = func1(); log( func1() ); // () => 1 log( func2 ); // () => 1 log( func2() ); // 1 고차함수 - 함수를 인자로 받아서 실행하는 함수 const apply = func => fun..
-
[JPA] 식별관계, 비식별 관계, 복합키기초/JPA 2022. 10. 11. 13:01
식별관계 부모 테이블의 기본키(FK) + 현재 테이블의 기본키를 합쳐서 기본키로 사용하는 형태 Owner ID (PK) CHILD owner_id(PK, FK) id (PK) 비식별관계 필수적 비식별 관계 : 외래 키 NULL (X) 선택적 비식별 관계 : 외래 키 NULL (O) 복합 키 : 비식별 관계 매핑 Id가 하나일 경우 @Entity public class TEST { @Id private String id; } 키가 2개 이상일 경우 - 아래와 같은 복합키에 관련된 로직을 구현해야 한다. - hasCode와 equals를 구현하여 @IdClass - 관계형 데이터베이스 설계 중심 @EmbeddedId - 객체지향 중심
-
[JPA] 객체간의 매핑기초/JPA 2022. 10. 11. 11:40
상속 DB에는 상속 개념이 없지만 DB모델링 기법중 슈퍼타입 - 서브타입 모델링 기법이 상속 개념과 비슷하다. 1. 조인전략 - 각각의 엔티티를 만든다. - 자식 테이블은 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 - 부모 테이블에서는 자식테이블을 구분하는 컬럼을 생성 Character ID 이름 능력치 Jobs (자식 구분 컬럼) Warrior Mage Rogue Character_ID (PK, FK) 힘(power) Character_ID (PK, FK) 지능(intellect) Character_ID (PK, FK) 행운(luck) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(na..
-
[JPA] 연관관계기초/JPA 2022. 10. 8. 18:20
방향 DB테이블의 관계는 항상 양방향이다. 객체는 한 쪽만 참조할 수 있고, 양쪽 모두 참조할 수 있다. 양방향 관계 양쪽 객체가 단방향으로 서로를 참조할수 있는 관계다. 연관관계 주인 ( Owner ) 객체가 양방향 관계가 되면 주인을 정해야 한다. 객체 그래프 탐색 관계가 형성된 객체는 참조를 통해 연관관계를 탐색할 수 있다. School school = student1.getSchool(); 객체 관계 매핑 ex) Studen (M) : School (1)의 관계 @Entity public class Student{ @Id private String id; @ManyToOne @JoinColumn(name="SCHOOL_ID") private School school; public void setS..
-
[JPA] JPA 어노테이션기초/JPA 2022. 10. 8. 17:04
@Entity 더보기 JPA가 관리하는 테이블과 매핑할 클래스 - 기본 생성자 필수 ( 파라미터가 없으며 public protected 생성자 ) - final, enum, interface, inner 클래스에 사용할 수 없다. 실제로 구현되며 변경가능한 클래스에만 적용가능 @Table @Id 더보기 기본키 @GenerationType 더보기 - IDENTITY : DB에 위임 - 데이터베이스가 식별자를 구하므로 쓰기 지연이 동작하지 않는다. (DB와 한번통신) - SEQUENCE : DB 시퀀스를 활용한 기본키 - DB의 시퀀스를 사용하므로 DB와 2번통신한다. - allocationSize : sequence 전략 최적화, 미리 지정된 갯수만큼 시퀀스를 등록한다. - TABLE : 키 생성 테이블을..
-
[JPA] 영속성 컨텍스트기초/JPA 2022. 10. 8. 15:45
영속성 컨텍스트 엔티티를 영구히 저장하고 관리하는 공간 1. 영속성 컨텍스트와 식별자 값 (@Id로 테이블의 기본 키와 매핑한 값) 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 식별자 값이 없으면 예외가 발생한다. 2. 영속성 컨텍스트와 데이터베이스 저장 Flush : JPA가 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하는 작업 3. 영속성 컨텍스트가 엔티티를 관리 성능 이점. - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경감지 - 지연로딩 1차 캐시 : 영속성 컨텍스트가 내부에서 엔티를 관리하고 있는 장소 조회 로직 1) 1차캐시에 엔티티가 존재하는 경우 find > 1차..