본문 바로가기

전체 글

(93)
JPA - 엔티티 매핑 - 객체와 테이블 매핑: @Entity, @Table - 기본 키 매핑: @Id - 필드와 컬럼 매핑: @Column - 연관관계 매핑: @ManyToOne, @JoinColumn @Entity 속성 기능 기본값 name JPA에서 사용할 Entity 이름을 지정. 설정하지 않으면 Class명을 그대로 사용한다 (ex) User class -> "User") @Entity 사용시 주의사항 - 기본 생성자는 필수 (파라미터가 없는 public 혹은 protected) => 실제로 Entity Class에서 생성자를 생략해도 Java에서는 기본생성자를 만들어주기 때문에 오류가 발생하지는 않음. => JPA가 객체 생성시에 기본 생성자를 사용하기 때문 - final, enum, interface, inner ..
JPA - 영속성 컨텍스트 영속성 컨텍스트 - EntityManager를 생성할 때 만들어지며 Entity를 저장하는 논리적인 공간 - EntityManager를 통해서 Entity를 영속성 컨텍스트에 보관 및 관리한다 특징 - 영속 상태는 식별자 값이 반드시 있어야 한다. (@Id 어노테이션으로 테이블의 기본 키로 매핑한 값) - 데이터베이스 저장 - 영속성 컨텍스트에 Entity를 저장(영속상태)하고 트랜잭션이 커밋되는 순간 DB에 반영하는데 이를 플러시(flush)라 한다. - Entity를 관리하여 아래와같은 장점이 생겨남 1] 1차 캐시 영속성 컨텍스트는 내부에 캐시를 가진다. 영속 상태의 Entity를 이곳에 저장한다. find() 메소드(데이터를 조회)를 호출하여 Entity를 조회할때 곧바로 DB로 가는것이 아닌 영..
Java - 설정 옵션 (Garbage Collector) 옵션 -server : Java Hotspot Server VM을 선택. Java Hotspot Client VM대비 구동 시간은 오래걸리지만, 이후부터는 빠른 성능을 발휘한다. (참고: https://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html) -Djava.net.preferIPv4Stack : IP4 사용여부 (boolean) -Dsun.io.useCanonCaches : Java의 정규화 캐시 사용여부 (boolean) -Dfile.encoding : Java 소스파일 인코딩 -Djava.awt.headless : 비윈도우 환경에서 GUI 클래스를 사용할 수 있게해주는 옵션 GC 관련 옵션 -Xms : JVM시작시 Hea..
Java - Garbage Collector Garbage Collector(가비지 컬렉터)란? 쓰레기 수집. 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역중, 필요없게 된 영역의 메모리를 회수하는 기능이다. C언어와 같은 경우에는 free() 함수를 통해 직접 메모리를 해제해줘야하는데, Java나 Kotlin에서는 JVM에서 Garbage Collector가 불필요한 메모리를 알아서 정리해준다. 아래의 코드를 살펴보자. String[] arr = new String[3]; arr[0] = "a"; arr[1] = "b"; arr[2] = "c"; arr = new String[] {"가비지", "컬렉터", "설명"}; 처음에 선언한 arr와 아래에서 선언한 arr는 메모리 주소값이 다르다. 그렇다면 처음 선언했던 arr..
Java - 데이터 타입(기본타입, 참조타입) 기본 변수 타입 - 논리형 변수타입 boolean (기본타입하고 형변환 불가) - 문자열 변수타입 char (단일 문자열, 아스키코드, 유니코드) - 정수형 변수타입 byte (1Byte, -128 ~ 127) short (2Byte, -32,768 ~ 32,767) int (4Byte, -2,147,483,648 ~ 2,147,483,647) long (8Byte, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807) - 부동소수점(실수형) float (4Byte, 1.40239846E-45f ~ 3.40282347E+38f) double (8Byte, 4.94065645841246544E-324 ~ 1.79769313486231570E+308) 참조타입 ..
Docker - 명령어 컨테이너 생성 및 실행 : docker run [옵션] [:태그명] [값] ex) docker run -d --name container1 -p 8080:80 --link ubuntu:16.04 -v /Users/we/docker-test:/home/ubuntu docker_ubuntu:1.0 docker run 관련 옵션 - 주요옵션 -a, —attach=[STDIN | STDOUT | STDERR] : 표준 입력(STDIN), 표준 출력(STDOUT), 표준 에러 출력(STDERR)을 연결 --cidfile=“파일명”: 컨테이너 ID를 파일로 출력 -d, --detach: 컨테이너를 생성하여 백그라운드에서 실행 -i, --interactive: 컨테이너 표준 입력 열기 -t,--tty: tty(단말 ..
python 문법정리 파이썬을 내가 사용할일이 있을까..? -------------------------------------- 모듈, 함수, 클래스 등 색인 3.10.0 Documentation Python 3.10.0 문서 Welcome! This is the official documentation for Python 3.10.0. 설명서의 파트들: 파이썬 3.10 의 새로운 기능은? 2.0 이후의 모든 "새로운 기능" 문서 자습서 여기에서 시작하세요 라이브러리 레퍼 docs.python.org 파이썬은? 인터프리터 언어. 사용하기 편리한 언어 - 연산 : 파이썬은.. 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 를 다른 언어처럼 계산할 수 있다. 제곱 : x ** 2 (2의 제곱) - 변수 : 다른 언어처럼 변수선언이 가능하..
Server - ubuntu에 mariaDB 설치하기 - Server환경: ubuntu 16.04 LTS - Target DataBase: mariadb 10.4 1] apt에 repository추가. (mariadb 관련) $ sudo apt-get install software-properties-common gnupg-curl $ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' $ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] https://ftp.harukasan.org/mariadb/repo/10.4/ubuntu xenial main' (!) apt에 등록된 repository 경로 확..
Etc - Redis = Redis(Remote Dictionary Server)란? key-value 기반의 저장소로써 다양한 자료구조를 지원하는 NoSQL이다. Message Queue, Shared Memory, Remote Dictionary 용도로 사용된다. 특히, Remote Dictionary로써 RDBMS의 캐시 솔루션으로 사용 용도가 굉장히 높다. = Redis의 특징 1] 빠른 읽기 쓰기 속도: 메모리 기반으로 동작을 수행함으로써 HDD, SSD 등의 저장장치(Disk)를 거치지 않기 때문에 I/O가 Disk를 거쳐가는 RDMS보다 성능이 좋다. 2] key-value 저장: 레디스에 쉽고 편하게 읽고 쓸 수 있다. 3] 다양한 데이터 타입 지원: 아래 자료구조와 같이 다양한 형태로 데이터를 저장할 수 있다..
Spring - 인스턴스 변수 참조 스프링 프레임워크는 필요한 클래스를 의존주입(Dependency Injection)하여 사용한다. 이때 주입하여 생성된 객체는 싱글톤으로 생성되어 스프링 컨테이너에서 한번 생성하여 관리한다. 싱글톤 Bean은 스프링 컨테이너에서 한번 생성된다. (컨테이너가 사라질 때 Bean도 제거된다) 생성된 하나의 인스턴스는 Single-Beans-Cache에 저장되고, 해당 Bean에 대한 요청과 참조가 있으면 캐시된 객체를 반환한다. 즉, 하나만 생성되기 때문에 동일한 것을 참조한다. 기본적으로 모든 Bean은 Scope이 명시적으로 지정되지 않는다면, Singleton이다. 단, ProtoType으로 빈이 생성된다면, 다수의 객체로써 존재하게 된다 이슈상황 코드 확인 controller package com.t..