BackEnd
-
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..
-
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 과 해당 자식..
-
도커 이미지 빌드 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..
-
도커 컨테이너 실행하기BackEnd/도커 2021. 3. 7. 14:25
컨테이너 실행하기(run) > 웹 앱 실행하기 > mysql 에 워드프레스 설치하기 > 자주 사용하는 명령어 도커 실행 도커 허브를 켜야 도커 클라이언트를 사용할 수 있다. > cmd 에서 docker 명령을 하기 위해서는 로컬 pc 에 설치한 도커 허브를 시작해야한다. docker 라는 명령어를 통해 client 에서 server 로 명령을 전달할 수 있다. 컨테이너 실행하기 docker run [option] 이미지명:태그 [command] [arg..] * run 은 create + start 를 합친 명령어로, 명령어가 컨테이너를 생성, 실행함. - create 할 때 파일스냅샷을 컨테이너 하드디스크에 적재 - start 할 때 run 명령어를 컨테이너 실행 명령어로 적재 이미지가 cache 저장..
-
EnumBackEnd/자바 2021. 1. 31. 09:38
Enum 은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. Enum 은 class 선언 자리에 enum 을 대신 넣어 아래와 같이 만들 수 있다. public enum Fruits { APPLE,PEACH,BANANA; private Fruits(){ System.out.println("Fruits constructor"); } } Enum 생성자는 private 으로만 선언할 수 있으며, 변수를 선언한 만큼 생성자가 돌아가 아래와 같은 결과가 나온다. public class Test { public static void main(String[] args) { Fruits type = Fruits.APPLE; } } ---------------..
-
예외처리BackEnd/자바 2021. 1. 16. 12:20
오류와 예외 오류(Error) 시스템레벨에서 발생하는 에러로, 컴퓨터 하드웨어의 오동작 또는 고장으로 인한 이상이나 JVM 실행에 문제가 생겼을 경우에 발생한다. 개발자가 미리 예측할 수 없기 때문에 오류에 대한 처리는 하지 않는다. 예외(Exception) 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 발생하는 프로그램 오류이다. 예외가 발생하면 프로그램이 종료되는 것을 오류와 동일하지만 예외처리를 통해 프로그램이 정상적으로 작동하게 할 수 있다. 예외 계층 구조 Exception 에는 Checked 와 UnChecked Exception 이 있다. 모든 클래스는 Exception 클래스를 상속받는데, Exception 클래스 자체는 checked exception 이다. Checked Except..