객체와 테이블 매핑 @Entity @Entity가 붙은 클래스를 엔티티라 부른다. 테이블과 매핑할 클래스에 붙는다. 기본 생성자(파라미터가 없는 생성자)는 필수다. @Table 엔티티와 매핑할 테이블을 지정 ex) Table(name="MEMBER") 생략하면 엔티티 이름을 테이블 이름으로 사용한다. 기본 키 매핑 직접 할당 전략 : 기본 키를 애플리케이션에서 직접 할당한다. @Id @Column(name = "Id") private String id; Board board = new Board(); board.setId("id1");//기본 키 직접 할당 em.persist(board); 자동 생성 전략 : 대리 키 사용 방식 IDENTITY : 기본 키 생성을 데이터베이스에 위임 ex) MySQL @..
Entity Manager Factory Entity Manager를 만드는 공장 만드는 비용이 크기 때문에 애플리케이션 전체에서 하나만 만들어서 공유하도록 설계 Entity Manager 만드는 비용이 거의 들지 않는다. 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다. 영속성 컨텍스트(persistence context) Entity Manager를 생성할 때 하나 만들어진다. Entity Manager를 통해 영속성 컨텍스트에 접근하고 관리한다. 영속성 컨텍스트는 Entity를 식별자 값으로 구분하기 때문에 식별자 값이 반드시 있어야 한다. transaction을 commit하는 순간 영속성 컨텍스트에 저장된 entity를 데이터베이스에 반영한다.(flus..
brew tap AdoptOpenJDK/openjdk brew search jdk brew install --cask adoptopenjdk11 자바 설치 확인 java --version 참고 homebrew로 openjdk 설치하기 Software Developer, I love code. findstar.pe.kr Mac에서 Open JDK 설치하기 기초중의 기초지만 운영체제가 바뀌면 어리둥절하기 마련이죠! 맥에 JDK를 설치하는 방법이 있지만, 이번엔 홈브류HomeBrew를 통해 빠르게 설치해보려고 합니다. 홈브류란 npm의 애플 버전이라고 timevoyage.tistory.com
GC(Garbage Collector)란? - JVM의 Heap 영역에서 사용하지 않는 객체를 삭제하는 프로세스 GC의 수거 대상 - 어떤 객체의 유효한 참조가 존재한다면 Reachable, 그렇지 않다면 Unreachable이라고 한다. GC의 동작 순서 - Mark and Sweep 알고리즘을 따른다. - Mark는 Reachable 객체와 Unreachable 객체를 식별하여 마킹한다. - Sweep은 Unreachable한 객체들을 Heap에서 제거한다. - GC 알고리즘에 따라 Compact 과정이 추가되기도 한다. Compact는 Sweep 후에 분산된 객체들을 한 곳으로 모아서 메모리 단편화를 막아준다. GC는 언제 일어날까 - Heap의 구조는 Young Generation, Old Gen..
Java Virtual Machine이란? - Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신. - JRE(Java Runtime Environment)에 포함되어 있다. - Class Loader, Runtime Data Area, Execution Engine, JNI, Native Method Library으로 이루어져 있다. Class Loader - .class 파일을 JVM의 Runtime Data Area에 배치한다. Runtime Data Area - Method 영역, Heap 영역은 모든 쓰레드가 공유하는 영역. - Stacks, PC registers, Native Method Stacks은 쓰레드 마다 하나씩 생성되는 공간. - Method 영..
퍼사드 패턴(Facade Pattern) 하나의 인터페이스에서 복잡한 서브시스템을 통합하여 동작시킬 수 있도록 제공해주는 패턴 퍼사드 객체가 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공한다. 실제 사용 예 : Spring에서 Controller 구조 예제 소스 코드 /* Complex parts */ class CPU { public void freeze() { ... } public void jump(long position) { ... } public void execute() { ... } } class Memory { public void load(long position, byte[] data) { ... } } class HardDrive ..
REST(=RESTful) API(Representational State Transfer Application Programming Interface) REST 구조의 제약 조건을 준수하는 API를 뜻함 웹의 장점을 최대한 활용할 수 있는 구조 REST 구성 자원(Resource) - URI 행위(Verb) - HTTP METHOD 표현(Representations) REST 특징 1. Uniform Interface(통일된 방식) : URI로 지정된 리소스에 대한 조작을 통일된 방식으로 수행하는 구조 2. Stateless(무상태성) : API 서버는 들어오는 요청만 단순히 처리한다. 3. Cacheable(캐시 가능) : HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag나 E-Ta..
int num = 92; //10 -> 2, 8, 16 String binNum = Integer.toBinaryString(num); String octNum = Integer.toOctalString(num); String hexNum = Integer.toHexString(num); System.out.println(binNum);//1011100 System.out.println(octNum);//134 System.out.println(hexNum);//5c //2, 8, 16 -> 10 int binToDec = Integer.parseInt(binNum, 2); int octToDec = Integer.parseInt(octNum, 8); int hexToDec = Integer.parseI..
문자 -> 숫자 String str_num = "1234"; //String to Int int int_num1 = Integer.parseInt(str_num); //String -> Int int int_num2 = Integer.valueOf(str_num); //String -> Int //String to Double, Float double double_num = Double.valueOf(str_num); //String -> Double float float_num = Float.valueOf(str_num); //String -> Float //String to Long, Short long long_num = Long.valueOf(str_num); //String -> Long sho..