본문 바로가기

반응형

Tech

(56)
[JPA] 상속관계 매핑 상속관계 매핑 객체는 부모 클래스와 자식 클래스의 상속관계가 있지만, 관계형 데이터베이스는 상속관계가 존재하지 않는다. 대신 데이터베이스에는 슈퍼타입, 서브타입 관계라는 모델링 기법이 있는데, 이 기법이 객체의 상속과 유사한다. 이 방법을 객체의 상속과 매핑하여 상속관계를 구현한다. ※ 슈퍼타입 - 서브타입 모델링 공통 속성을 가진 여러개의 데이터들이 존재할 때, 이들을 어떻게 관리할 것인지에 대한 방법이다. 슈퍼타입 모델링은 전체 데이터를 하나의 슈퍼 테이블로 관리하는 방식이다. 이 방식으로 관리하는 경우, 전체 검색에 유리하지만 공통 속성을 제외한 나머지 속성에 대해서 NULL 값이 저장되는 단점이 있다. 서브타입 모델링은 각 데이터들을 공통 속성 + 서브 속성으로 각각의 서브타입별로 데이터를 저장하..
[JPA] 연관관계 매핑 종류 객체간의 연관관계를 매핑할 때는 다음의 요소들을 고려해야한다. 1. 다중성 - 1:1, 1:N, N:1, N:M 2. 방향성 - 단방향, 양방향 3. 연관관계의 주인 위의 요소들을 고려하여 JPA 에서는 다양한 연관관계 매핑을 사용할 수 있다. 1. 다대일 [N:1] 다대일 단방향 여러개의 객체가 하나의 객체를 참조하는 구조이다. 데이터베이스 테이블의 관계에서는 N 에 해당하는 테이블이 1 에 해당하는 테이블의 키를 외래키로 가진다. 객체의 연관관계에서는 외래키가 있는 테이블의 객체가 1 에 해당하는 테이블을 참조하여 매핑한다. @ManyToOne, @JoneColumn 등의 어노테이션을 사용하여 구현한다. @Entity public class Team { @Id @GeneartedValue @Colum..
[JPA] 연관관계 매핑 (2) - 양방향 연관관계 1. 양방향 연관관계 양방향 연관관계는 두 객체가 서로 상대편을 참조하고 있는 연관관계를 의미한다. 기존의 단방향 연관관계에서는 참조하는 객체만 반대편 객체를 외래키와 매핑하여서 참조하고 있었다. 하지만 양방향 연관관계에서는 참조되는 객체도 참조하는 객체를 바라보고 있어서 반대 방향에서도 객체 그래프 탐색이 가능하다. // 참조되던 쪽에서는 참조하는 쪽을 바라보기 위한 멤버가 추가된다. class Team { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "team") // 일대다 관계. Member 객체의 team 에 매핑된다. List members = new ArrayList(); // 해당 team 에 해당하는 member 들을 List ..
[JPA] 연관관계 매핑 (1) - 단방향 연관관계 DB 에서는 테이블의 외래키를 이용하여 테이블간의 연관관계를 구성한다. JPA 는 전통적인 테이블 간의 관계를 객체간의 연관관계로 매핑시켜준다. 객체의 참조변수와 테이블의 외래키를 매핑시켜서 연관관계를 객체지향적으로 변환시켜준다. JPA 에서 연관관계는 방향에 따라서 단방향, 양방향으로 구분이 되며, 서로의 연관을 가지는 객체의 개수 (다중성, multiplicity) 에 따라서 다대일, 일대다, 일대일, 다대다 등으로 구분이 된다. 또한 양방향 연관관계에서 연관관계의 주인, owner 를 지정하여 어떤 객체가 해당 데이터의 관리 권한을 가질 것인가를 결정한다. 1. 연관관계의 필요성 객체의 연관관계가 없이 테이블의 연관관계를 기반으로 설계를 하게되면 객체지향적인 설계를 할 수가 없어진다. 테이블은 외래..
[JPA] 영속성 관리 JPA 는 영속성 컨텍스트를 통해서 객체와 DB 사이의 entity 를 관리한다. 영속성 컨텍스트는 entity manager 에 의해 관리되는데, 이를 통해서 애플리케이션과 데이터베이스 사이에서 데이터가 처리된다. - EntityManagerFactory 애플리케이션 로딩 시전에 DB 당 하나만 생성되는 팩토리이다. 요청이 있을 때마다 EntityManager 를 생성한다. - EntityManager 영속성 컨텍스트를 관리하는 객체이다. 실제 transaction 단위를 수행할 때마다 생성하는데, DB Connection 을 통해서 DB 에 접근한다. 1. 영속성 컨텍스트 (Persistence Context) 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에서 엔..
[Linux] PID, PPID 1. PID, PPID - PID PID 는 Process ID 의 줄임말로 운영체제에서 프로세스를 식별하기 위해 부여하는 번호를 의미한다. 프로세스는 실행 중인 프로그램을 의미한다. 메모리에 적재되어 있으며, 프로세스의 상태 정보, PCB 를 포함한 개념이다. PID 의 최대값은 32768 이다. 32768 인 이유는 16bit signed integer 를 사용하기 때문이다. PID 의 ID 할당 방식은 최근 할당된 PID 에 1을 더한 값으로 할당한다. 순서대로 1씩 할당되다가 32768 을 넘어가면 다시 1부터 시작한다. - PPID PPID 는 Parent Process ID 의 줄임말로 부모 프로세스의 PID 를 의미한다. 부모 프로세스는 현재 실행 중인 프로세스 (자식 프로세스) 를 시스템 ..
[Linux] scp (secure copy) 1. scp scp는 secure copy의 약자로 ssh 원격 접속 프로토콜을 기반으로 한 파일 전송 프로토콜이다. 원격으로 파일과 디렉토리 등을 보내고, 가져오는데 사용한다. 네트워크가 연결되어 있는 환경에서 ssh와 동일한 22번 포트와 identity file을 사용하여 파일을 송수신하기 때문에 보안적으로도 안정적이다. 2. 설치 scp는 ssh 프로토콜을 사용하여 통신하기 때문에 ssh 라이브러리가 설치되어 있어야 사용할 수 있다. ubuntu에서는 다음 명령어를 통해 ssh를 설치할 수 있다. sudo apt-get install openssh-server 3. 사용방법 - local -> remote 전송 1) 단일 파일을 원격지로 전송 scp [option] [filename] [remot..
[Linux] shell basic command 1. manual - man (manual) 명령어에 대한 설명과 옵션들을 보여준다. ex) man [command] - clear clear the terminal screen 2. Navigating file system - pwd (print working directory) 현재 위치의 전체 경로를 출력한다. - ls (list) 현재 디렉토리 안에 있는 폴더와 파일들을 출력한다. ex) ls [-l, long] [-a, all] [directory_name] - open 해당 경로의 디렉토리를 파일 탐색기로 연다. ex) open . - cd (change directory) 경로로 준 위치, 디렉토리로 이동한다. '.'은 현재 경로, '..'은 상위 경로를 의미한다. '~'는 home dire..

반응형