본문 바로가기

분류 전체보기81

JPA 영속성 컨텍스트 JPA 엔티티 JPA에서 말하는 엔티티란 테이블에 대응하는 하나의 클래스라고 생각하면 된다. @Entity public class Account { String username; String password; } 그래서 JPA에서 '하나의 엔티티 타입을 생성한다' 라는 말의 의미는, '하나의 클래스를 작성한다'는 의미와 동일하다. 엔티티 매니저 엔티티 매니저란 여러 엔티티 객체를 관리하는 역할을 하는 것을 말한다. 여기서 말하는 '관리'란 엔티티 객체의 Life Cycle을 관리하는 것이다. 즉 엔티티 매니저는 관리하는 엔티티 객체들을 영속 컨텍스트(Persistence Context)에 넣어두고, 객체들의 생사를 관리한다. 이러한 엔티티 매니저는 엔티티 매니저 팩토리를 통해서 생성된다. 엔티티 매니저 .. 2023. 4. 17.
자바에서의 예외 처리 자바에서 에러, 예외와 관련 된 클래스의 계층구조는 위와 같다. 자바는 실행 시 (runtime) 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception)으로 구분한다. 에러와 예외가 어떻게 구분되는 지를 먼저 확인 해 보면, 예외는 입력 값에 대한 처리가 불가능하거나, 프로그램 실행 중에 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름과 다르게 어긋나게 동작하는 것을 말한다. 이러한 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링한다. 그와 다르게 에러는 시스템 자체에 무엇인가 비정상적인 상황이 생긴 경우에 사용된다. 주로 자바 가상머신에서 발생 되며 예외와 다르게 애플리케이션 코드에서 잡을 수 없다. 예시로는 OutOfMemoryError, Th.. 2023. 4. 16.
Garbage Collection Garbage Collection 가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다. Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있다. 그러나 메모리가 언제 해제되는지 정확하게 알 수 없어 제어하기 힘들며, 가비지 컬렉션(GC)이 동작하는 동안에는 다른 동작을 멈추기 .. 2023. 4. 10.
JVM의 구조와 JAVA의 실행방식 JVM이란 JVM은 자바 가상 머신의 약자로, 자바 프로그램 실행환경을 만들어주는 소프트웨어이며, 메모리 관리(GC)를 수행하는 스택 기반의 가상머신이다. JVM의 역할은 다음과 같다. 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행할 수 있도록 한다. 자바와 운영체제 사이에서 중개자 역할을 수행하여 자바가 운영체제에 구애 받지 않고 프로그램을 실행할 수 있도록 도와준다. 이 때 Java는 JVM을 통해 플랫폼에 종속적이지 않지만, JVM은은 플랫폼에 의존적이라서 각 플랫폼에 맞는 JVM이 존재한다. JVM의 구조 Class Loader JVM 내로 클래스 파일(*.class)을 동적으로 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. 즉, 로드된 바이트 코드(.class.. 2023. 4. 10.
제네릭 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다. 한마디로 특정(Specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이라는 것이다. 어떤 자료구조를 만들어 배포하려고 할 때 String 타입도 지원하고싶고 Integer타입도 지원하고 싶고 많은 타입을 지원하고 싶다. 그러면 String에 대한 클래스, Integer에 대한 클래스 등 하나하나 타입에 따라 만들 것인가? 이러한 문제를 해결하기 위해 우리는 제네릭이라는 것을 사용한다. ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); LinkedList.. 2023. 4. 10.
어노테이션 어노테이션의 정의 어노테이션은 사전적 의미로는 주석이라는 뜻이다. 자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있다. 어노테이션은 다음과 같은 용도로 사용된다. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공 (SW 개발 툴에서 어노테이션의 정보를 통해 특정 코드를 자동으로 추가할 수 있) 실행시(런타임시) 특정 기능을 실행하도록 정보를 제공 그래서 요약하자면, 어노테이션은 작성한 코드에 대해 추가적인 정보를 제공하면서 컴파일 타임 혹은 런타임.. 2023. 4. 10.