분류 전체보기

·Study
런타임 데이터 영역(Runtime Data Area)은 실제 클래스 파일이 적재되는 곳으로 JVM이 OS로부터 자바 프로그램 실행을 위한 데이터와 명령어를 저장하기 위해 할당받는 메모리 공간이다. 런타임 데이터 영역은 크게 다섯 가지 영역으로 나뉜다. 메서드 영역 (Method Area) 힙 영역 (Heap Area) 스택 영역 (Stack Area) PC 레지스터 (Program Counter Register) 네이티브 메서드 스택 (Native Method Stack) 그리고 Java에서 Thread가 공유하는 영역과 공유하지 않는 영역은 다음과 같다. 🫧 Thread가 공유하는 영역 힙 영역 메서드 영역 🫧 Thread가 공유하지 않는 영역 스택 영역 PC 레지스터 영역 네이티브 메서드 스택 🌱 P..
·Study
🌱 지역 / 매개변수 위치 🫧 기본 자료형 (정수, 소수, boolean) public class Test { public static void main(String[] args) { // 지역변수 int intValue = 10; double doubleValue = 3.14; char charValue = 'A'; boolean booleanValue = true; // 매개변수 public static void printInt(int number) { System.out.println("Received int value: " + number); } } } 메서드 내에 생성되거나 전달된 지역/매개변수에 할당된 값이 기본 자료형일 경우 stack에 저장되고 메서드 종료 시 소멸된다. 🫧 참조 자료형 (..
·Study
🌱 트랜잭션 격리 수준(Transaction Isolation Level) 트랜잭션의 격리 수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이다. 트랜잭션 격리 수준은 격리(고립) 수준이 낮은 순서대로 READ UNCOMMITED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE가 존재한다. READ UNCOMMITED READ COMMITTED REPEATABLE READ SERIALIZABLE 참고로 아래의 예제들은 모두 자동 커밋(AUTO COMMIT)이 false인 상태에서만 발생한다. 1️⃣ READ UNCOMMITED (Level 0..
·Back-end
🤭 미리 읽고 오면 좋은 글 [JPA] JPA, Hibernate, Spring Data JPA에 대한 이런저런.. 정리☁️ JPA 인터페이스 🫧 EntityManagerFactory JPA 설정을 기반으로 EntityManager 인스턴스를 생성하는 팩토리 역할 (여러 EntityManager 생성 가능) 애플리케이션이 DB를 하나만 사용하는 경우 EntityManagerFactorychaewsscode.tistory.com [JPA] Hibernate JPA EntityManager 핵심 기능🌱 영속성 컨텍스트 내의 Entity 생명주기 엔티티는 크게 4가지 상태를 가지며, 상태를 전환시키는 기능을 EntityManager가 제공한다. 1. Transient(비영속): 엔티티 객체가 Java 메..
·Study
🌲 equals와 hashCode란?equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다.따라서 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. 🌱 equals() 란?public boolean equals(Object obj) { return (this == obj);} 🫧 '==' 연산자와 동일성(identity)자바에서 '==' 연산자는 객체의 메모리 주소를 비교하기 때문에 두 객체가 서로 다른 메모리 주소에 할당되어 있다면 두 객체를 다른 것으로 판단한다. 따라서 '==' 연산자는 주로 기본 타입의 값이나 객체의 참조 자체를 비교할 때 사용된다.하지만 동등성을 올바르게 판단하지 못하..
인스턴스화를 막는 이유 1. 불필요한 인스턴스 생성 방지 어떤 클래스가 여러 번 인스턴스화되어도 동일한 객체를 반환해야 할 때가 있다. 이런 경우, 생성자를 직접 호출하지 못하게 하고 미리 생성된 인스턴스를 제공함으로써 불필요한 객체 생성을 방지해 메모리와 성능을 최적화할 수 있다. 2. 상태의 불변성 유지 비밀번호 해싱 라이브러리같이 해싱된 비밀번호를 변경하지 못하도록 하기 위해 인스턴스화를 막을 수 있다. 3. 싱글톤 패턴 싱글톤은 어떤 클래스의 인스턴스가 오직 하나만 존재해야 하는 경우 사용된다. 이 경우, 클래스의 생성자를 private로 만들어 외부에서 인스턴스를 생성하지 못하게 하고, 정적 메서드나 정적 변수를 사용하여 하나의 인스턴스를 관리한다. 4. 상속 제어 어떤 클래스를 다른 클래스에서..
싱글톤(Singleton) 패턴 소프트웨어 디자인 패턴에서 싱글톤 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. 싱글톤 패턴은 간단히 객체의 인스턴스를 한 개만 생성되게 하는 패턴이다. public static final 필드 방식의 싱글톤 public class Elvis { public static final Elvis INSTANCE = new Elvis(); priva..
정적 팩토리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 제약이 있다. 점층적 생성자 패턴 public class NutritionFacts { private final int servingSize;// 필수 private final int servings;// 필수 private final int calories;// 선택 private final int fat;// 선택 private final int sodium;// 선택 private final int carbohydrate;// 선택 public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } public NutritionFact..
·Back-end
🤔 OSIV에 대해 알아보기 전.. Persistence Context 를 모른다면? [JPA] 영속성 컨텍스트의 동작원리와 이점 👍 영속성 컨텍스트의 동작원리 🌱 member 엔티티를 추가하는 과정 1. 엔티티가 영속화(persist)되어 1차 캐시에 저장된다. 2. 쓰기지연 SQL 저장소에 INSERT문이 생성되어 1차 캐시에 등록된 데이터를 chaewsscode.tistory.com 🤧 OSIV 요약 더보기 특징 OSIV는 클라이언트 요청이 들어올 때 영속성 컨텍스트를 생성해서 요청이 끝날 때까지 같은 영속성 컨텍스를 유지한다. 따라서 한 번 조회된 엔티티는 요청이 끝날 때까지 영속 상태를 유지한다. 엔티티 수정은 트랜잭션이 있는 계층(서비스, 레포지토리 계층)에서만 동작한다. 트랜잭션이 없는 프레..
서채리
'분류 전체보기' 카테고리의 글 목록 (5 Page)