전체 글
-
값 타입IT/JPA 2020. 12. 29. 22:33
1. 값 타입 1) 값 타입의 분류 - 기본 값 타입 : 자바 기본타입(int, double..), 래퍼클래스(Integer), String - 임베디드 타입 : 복합 값 타입(사용자가 직접 정의한 값 타입) - 컬렉션 값 타입 : 한개 이상의 값 타입(List..) 2) 기본 값 타입 - 기본 값 타입은 생명주기가 회원 엔티티에 의존한다. - 값 타입은 공유해선 안된다. - 자바에서 int, double 같은 기본 값 타입은 절대 공유되지 않는다(a=b 코드에서 값만 복사됨) 3) 임베디드 값 타입 @Entity public class Member{ @Id @GeneratedValue private Long id; private String name; @Embeded Period workPeriod; ..
-
고급 매핑IT/JPA 2020. 12. 19. 12:52
1. 상속 관계 매핑 1) 조인 전략 - 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본키를 받아서 기본키+외래키 로 사용한다. - 데이터베이스 조회할 때에는 조인을 자주 사용한다. - 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없다. - 타입을 구분하는 컬럼(DTYPE)의 추가가 필요하다. @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "DTYPE") public abstract class Item { @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private String name; .... } @..
-
연관관계 매핑IT/JPA 2020. 12. 8. 21:25
1. 연관관계 1) 연관관계 - 방향 : 단방향, 양방향 이 있다. ex) 회원->팀(단방향), 회원->팀 팀->회원(양방향) - 다중성 : 다대일(N:1) 일대다(1:N), 일대일(1:1), 다대다(N:M) - 연관관계의 주인 : 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 한다. 2. 단방향 연관관계 * 연관관계 중에선 다대일(N:1) 단방향 관계를 가장 먼저 이해해야 한다. - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. - 회원과 팀은 다대일 관계다. * 객체 연관관계 - 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺는다. - 회원 객체와 팀 객체는 단방향 관계다. Member.team 필드를 통해 팀을 알 수 있지만 팀은 회원을 알 수 없다. *..
-
JPA 의 영속성 관리IT/JPA 2020. 11. 29. 02:30
1. 엔티티 매니저 팩토리와 엔티티 매니저 1) 엔티티 매니저 팩토리 - 엔티티 매니저를 만드는 공장, 객체 생성 비용이 크다. - 하나만 만들어서 애플리케이션 전체에서 공유해야 한다. - 여러 스레드에서 접근해도 안전하게 동작한다. - META-INF/persistence.xml 의 정보를 바탕으로 생성한다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("factoryName"); 2) 엔티티 매니저 - 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든것을 처리한다. - 여러 스레드가 동시 접근하면 문제가 발생하므로, 스레드 간에 공유하면 안된다. - 엔티티 매니저는 데이터베이스 연결이 꼭 필요한 시점까지..
-
6. Modules (NestJs)IT/NodeJs 2020. 10. 28. 19:01
1. Module 의 개념 - Module은 @Module() 데코레이터를 사용하는 클래스이다. - @Module 데코레이터는 Nest가 application 구조를 만들 수 있는 metadata를 제공한다. - 각 앱은 적어도 하나의 root 모듈을 가진다. 이 모듈은 Nest가 application graph를 만들때 시작점이 된다. - application graph : Nest가 module과 provider 간의 관계와 의존성을 해결하기 위해 사용하는 내부적 데이터 - 대부분의 application에서는 여러가지 모듈들을 사용하게 되고, 각각은 연관된 capabillity(기능) 에 따라 캡슐화 된다. - @Module() 이 인자로 갖는 객체는 아래와 같다. providers Nest의 inj..
-
5. Provider (NestJs)IT/NodeJs 2020. 10. 28. 15:23
1. Provider란? - NestJS의 기본 클래스들은 Provider로서 다루어진다. - Provider는 @Injectable() 데코레이터를 사용한다. - Provider 의 기본 아이디어는 의존성 주입(Dependancy Injection) 이다. (Java Spring의 Bean DI와 유사) - 즉 객체는 서로 다양한 의존관계를 가질 수 있으며, Provider의 의존성 기능은 NestJS의 런타임에 의해 관리된다. 2. Service - Nest에서 컨트롤러는 HTTP 요청을 처리하고 더 복잡한 작업을 Provider 에게 위임한다. - 복잡한 비즈니스 로직을 처리하는 부분을 Service Layer로 설계한다. - Service Layer의 객체를 Provider로 정의하고, @Inje..
-
4. NestJS 설치 및 실행, 기본구조IT/NodeJs 2020. 10. 28. 11:09
1. NestJS 설치하기 - NestJS는 CLI를 통해서 간단하게 프로젝트 설정이 가능하다. $ npm i -g @nestjs/cli//nestJS 패키지 설치 $ nest new [Project Name]//nestJS 프로젝트 생성 - 위와같이 설치하고 프로젝트를 실행하면 다음과 같은 프로젝트 구조가 만들어 진다. src |- app.controller.ts |- app.module.ts |- app.service.ts |- main.ts 파일 설명 app.controller.ts 싱글 라우트를 가진 간단한 샘플 컨트롤러 app.mudule.ts 어플리케이션의 root module app.service.ts service provider (provider의 개념은 다음장에서 설명) main.ts ..
-
3. NestJsIT/NodeJs 2020. 10. 28. 10:48
1. NestJS 란?? - 효율적이고 확장 가능한 Node.js 서버 어플리케이션을 구축하기 위한 framework 이다. - Nest에서도 Express를 사용하지만, 여러 다른 라이브러리와의 호환성을 제공한다. - Javascript와 MS의 TypeScript를 사용하며, 객체지향, 함수프로그래밍, 기능적 반응 프로그래밍 요소를 모두 결합한다. - 백앤드 서버에서도 NestJS를 사용하여 효과적인 아키텍처를 구현할 수 있다. 2. NestJS의 특징 - TypeScript를 사용함으로서 높은 수준의 코드 자동생성, 코드 탐색과 리팩토리능을 제공한다.(버그발생 빈도 줄어듬) - ORM 연동이 가능하다. - 여러 라이브러리와 호환성을 제공한다. ( Fastify, Socket 등등..) - 즉시 테스..