Backend

트랜잭션 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베스에 반영하는 JPA의 특징입니다. Dirty란 "상태의 변화가 생긴 정도"로 이해할 수 있으며, 즉 Dirty Checking이란 상태 변경 검사를 의미합니다. 더티 체킹의 기준 더티 체킹에서 "변화가 있다"의 기준은 최초 조회 상태입니다. JPA에서는 엔티티를 조회하면 해당 엔티티의 조회 상태 그대로 스냅샷(Snapshot)을 만들어 놓습니다. 그리고 트랜잭션이 끝나는 시점에는 이 스냅샷과 비교해서 다른점이 있다면 Update Query를 데이터베이스로 전달합니다. 당연히 이러한 상태 변경 검사의 대상은 영속성 컨텍스트가 관리하는 엔티티에만 적용됩니다. 즉, Detach된 엔티티(준영속), DB에 반영되기 전 처음 생성된 엔티티(..
· Backend/Java
Java에서의 SOLID 원칙은 객체 지향 프로그래밍의 다섯 가지 설계 원칙을 의미합니다. 이 원칙은 소프트웨어 설계의 유연성, 유지보수성, 확장성을 높이기 위해 사용됩니다. 1. 단일 책임 원칙 (Single Responsibility Principle - SRP): - 한 클래스는 단 하나의 책임만 가져야 합니다. - 상황 예시: 예를 들어, 게시글 관리 클래스가 게시글 작성, 읽기, 수정, 삭제 등의 여러 기능을 수행하는 대신, 각각의 책임을 분리하여 게시글 작성, 게시글 읽기, 게시글 수정, 게시글 삭제를 각각의 클래스로 나눌 수 있습니다. 각 SOLID 원칙에 대한 상황 예시와 코드를 함께 설명해드리겠습니다. 아래는 게시글 관리 클래스가 단일 책임 원칙을 지키지 않는 경우를 보여줍니다. // 게..
· Backend/Java
제네릭(Generic)의 기본 형태는 클래스, 인터페이스, 메서드 등에서 타입 매개변수를 사용하여 일반화된 형태의 코드를 작성하는 것입니다. 기본형태 : public class ClassName { // T 타입을 사용하는 멤버 변수, 메서드 등을 선언 } 여기서 `T`는 타입 매개변수로, 어떤 타입이든 사용할 수 있습니다. `T`는 클래스 이름 뒤에 ``와 같이 선언되어야 합니다. 이렇게 선언된 클래스는 인스턴스를 생성할 때 구체적인 타입을 지정할 수 있습니다. 제네릭(Generics)은 Java에서 매우 유용하며 주로 다음과 같은 몇 가지 용도로 사용됩니다: 1. 타입 안정성(Type Safety) 보장 제네릭은 컴파일 시간에 타입 안전성을 제공하여 잘못된 타입의 객체가 코드 내부로 들어오는 것을 방..
· Backend/Java
생성자가 매개변수를 필요로 하는지 여부는 주로 객체를 초기화하는 데 필요한 데이터를 생성자가 받아야 하는지에 따라 결정됩니다. 매개변수가 필요한 경우와 필요하지 않은 경우 각각의 차이를 살펴보겠습니다. 1. 매개변수가 필요한 경우: - 객체가 생성될 때 필요한 초기 데이터나 정보가 있는 경우 생성자에 매개변수를 전달합니다. - 객체를 생성할 때마다 서로 다른 값을 가진 객체를 생성할 수 있습니다. - 예를 들어, 'Person' 객체를 생성할 때 이름과 나이와 같은 정보를 초기화해야 하는 경우 생성자에 해당 데이터를 매개변수로 전달합니다. 예시: public class Person { private String name; private int age; public Person(String name, in..
· Backend/Java
챗gpt 내용. 정리용. java에서 인스턴스란 무엇을 말하는지 ?? Java에서 "인스턴스"란 클래스로부터 생성된 실체화된 객체를 가리키는 용어입니다. 클래스는 객체를 만들기 위한 틀이며, 이 틀을 이용하여 실제 데이터를 가지고 있는 객체를 생성합니다. 이때 생성된 객체를 인스턴스라고 부릅니다. 예를 들어, "사람"이라는 클래스가 있다고 가정해봅시다. 이 클래스에는 사람의 속성(이름, 나이, 성별 등)과 행동(먹다, 걷다 등)을 정의하는 것이 가능합니다. 그러나 이 클래스만으로는 실제로 그 속성과 행동을 가진 사람을 만들 수는 없습니다. 클래스를 이용하여 이름이 'John'이고 나이가 30인 사람을 만든다면, 이것이 클래스를 통해 생성된 실제 사람, 즉 인스턴스입니다. 인스턴스는 클래스로부터 생성되며,..
· Backend/Java
int instNum; static int classNum; void method() { int localNum; } 클래스 변수 : static int classNum; 클래스 영역의 변수(필드) 인스턴스 변수에 static을 앞에 붙여주면 되며, 모든 인스턴스가 공통된 값을 공유하게 됨. 앞에 public을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역 변수가 됨. 인스턴스를 생성하지 않고 클래스이름.클래스변수명 을 통해 접근 가능! static 영역에 저장되며, 프로그램 종료시 까지 소멸되지 않아 모든 객체가 사용 가능하다. 인스턴스 변수 : int instNum; 클래스 영역의 변수(필드) 각각의 인스턴스마다 고유의 값을 가져야 할때는 인스턴스 변수로 선언한다. heap 영역에 저장되..
chillmyh
'Backend' 카테고리의 글 목록 (3 Page)