분류 전체보기
-
JPA > 값 타입BackEnd/JPA 2021. 4. 25. 20:25
JPA 타입을 크게 분류하면 엔티티 타입과 값 타입으로 분류할 수 있다. 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자나 문자같은 속성만 있으므로 추적할 수 없다. 예를 들어 회원 엔티티는 그 회원의 키나 나이 값을 변경해도 같은 회원으로 볼 수 있지만, 값 타입은 추적할 수 없다. JPA 는 기본값 타입, 임베디드 타입, 컬렉션을 값 타입을 가질 수 있다. 모든 값 타입은 값 타입을 소유한 엔티티에 생명 주기를 의존한다. 1. 기본값타입 자바 기본 타입 (Primitive) , Wrapper 클래스 , String 클래스는 JPA 의 기본값 타입이다. Primitive Type 은 복사를 하기 때문에 값이 같이 변경되지 않고, Wrapper 클래스나 String..
-
JPA > 영속성 전이와 고아객체BackEnd/JPA 2021. 4. 25. 18:37
영속성 전이 영속성 전이라는 것은 여러 관련 엔티티가 있을 때, 예를 들면 부모와 자식 엔티티에서 , 부모가 영속성 컨텍스트에 들어갈 때 자식도 함께 관리되는 것을 말한다. 부모에 자식이 여럿 있을 때 부모와 N 개의 자식을 일일이 영속성 관리를 하기 번거로우니 cascade 옵션이라는 것을 통해 한 번에 관리해 줄 수 있다. 귀찮은 일 ! Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.persist(child1); em.persist(child2); CascadeTyp..
-
리눅스 기초 훑기기타/리눅스 2021. 4. 23. 11:29
목차 디렉터리 구조 쉘의 종류 기본 명령어 텍스트 에디터 vi 리다이렉트와 파이프 파일 명령어 심볼릭 링크와 하드 링크 시스템 관리 네트워크 사용자 환경 설정 경로 설정 로그 설정 마운트 디렉터리 구조 디렉터리 역할 bin 바이너리 형식의 실행 파일이나 명령이 보관되어 있다. dev 디바이스 관련 파일이 보관되어있다. etc 각종 설정 파일 등 다양한 파일이 보관되어 있다. root 루트 디렉터리와 별도로 준비된 시스템 관리자용인 홈 디렉터리이다. sbin 관리자용 시스템 표준 명령이 보관되어 있다. usr 각 사용자의 데이터나 애플리케이션이 보관되어 있는 장소이다. home 이 디렉터리 아래에 사용자별 디렉터리가 만들어지고, 그곳이 각 사용자의 홈 디렉터리이다. var 애플리케이션의 기록(로그)파일이나..
-
JPA > 연관관계 매핑BackEnd/JPA 2021. 4. 18. 01:02
연관관계 매핑 기초 객체와 테이블간 연관관계를 맺는 차이 테이블은 FK 하나로 양방향이 되지만, (테이블은 PK, FK 연결된 키로 조인해 항상 양방향의 정보를 다 수집할 수 있다.) 객체에는 단방향만 있다. 객체에서 양방향 관계를 만들기 위해서는 각 객체가 서로의 참조를 가지고 서로를 가르키는 두 개의 단방향 갖게 해야한다. 위 표에서 객체의 연관관계는 Member 객체가 team 필드를 통해 Team 에 단방향을 갖고 있고, 테이블에서 연관관계는 MEMBER 테이블의 TEAM_ID 라는 외래키를 통해 양방향을 갖고있다고 할 수 있다. 이 때 Member.team 과 MEMBER.TEAM_ID 을 매핑하는 것이 연관관계 매핑이다. 여러 회원은 한개의 팀에만 속할 수 있다는 조건에서 회원과 팀은 N : ..
-
JPA 기본BackEnd/JPA 2021. 4. 4. 22:08
객체와 관계형 데이터베이스의 차이 객체지향 프로그램은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다. 비지니스 요구사항을 정의한 도메인 모델도 객체로 모델링하면 객체지향 언어가 가진 장점을 활용할 수 있다. 하지만 이 객체를 메모리가 아닌 어딘가에 영구 보관해야하는데, 이는 관계형 데이터베이스이다. 관계형데이터베이스는 객체지향과 목적이 다르므로 기능과 표현방법이 다르다. 1. 상속 테이블에는 상속이라는 개념이 없다. 비슷하게 슈퍼타입, 서브타입이 있지만 객체지향에서 말하는 상속과 다르다. 예를 들어 Item 이라는 부모 테이블에 Album, Movie 등의 자식 테이블이 있다면, 관계형 데이터베이스에서 이를 관리하기 위해서 Item 과 해당 자식..
-
쉘스크립트의 셔뱅 shebang기타/리눅스 2021. 3. 29. 10:10
쉘 스크립트란 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일이다. 일반적으로 Python, Perl, Ruby 등 스크립트 언어는 각각의 고유한 인터프리터가 있다. 따라서 각 언어용 인터프리터를 따로 설치해야 한다. 쉘 스크립트는 특별한 경우인데, 인터프리터가 쉘 자체에 이미 포함되어 있어서 쉘에서 인터프리트 과정을 진행한다. 쉘 스크립트는 스크립트 언어로 만든 프로그램으로, 우리가 사용하는 운영체제의 쉘과 연동시키는 데에 사용된다. 스크립트는 인터프리터가 처리하고 실행하는데, 쉘 스크립트의 경우는 쉘이 직접 스크립트를 인터프리트한다. https://vallhalla-edition.tistory.com/28 아래와 같이 test.sh 를 작성하였다. 하지만 ./test.sh..
-
도커 이미지 빌드 DockerfileBackEnd/도커 2021. 3. 28. 21:40
도커는 레이어드 파일 시스템을 기반으로 한다. 레이어드 파일 시스템에는 AUFS, BTRDS, Overlayfs 등이 있다. Docker는 하나의 이미지로 부터 하나 이상의 컨테이너를 만들 수 있다. 이 과정은 하나의 프로그램 이미지(파일)로 부터, 여러 개의 프로세스를 실행 할 수 있는 리눅스 프로세스 모델과 매우 비슷한 측면이있다. 도커 이미지는 프로그램 이미지에 대응되며, 컨테이너는 프로세스에 대응된다. 이미지는 읽기 전용과 쓰기 가능 두 가지로 나뉜다. 하나의 도커 이미지로 부터 여러 개의 컨테이너를 만들려면, 도커 이미지가 "변경"이 되면 안 될 것이다. 프로그램의 파일이 변경되면 안 되듯이 원칙적으로 도커 이미지의 데이터는 변경이 되면 안된다. 실제 도커를 기반으로 SaaS 환경을 구축할 경우..
-
도커 컴포즈BackEnd/도커 2021. 3. 24. 20:50
상황1 . 아래와 같이 컨테이너를 실행하는데 설정해야할 요소가 많으면 명령어를 직접 쓰기 어려워진다. docker run -p 3000:3000 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app 이미지아이디 상황2 . 여러가지 앱을 하나의 서비스로 묶어 실행하고자 할 수도 있다. 이를 docker-compose.yml 을 정의해 해결할 수 있다. docker-compose.yml version: '2' services: db: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpr..