본문 바로가기
728x90

분류 전체보기258

[SpringDataElasticsearch] Spring Data Elasticsearch란? Elasticsearch용 Spring Data는 저장소별 기능을 유지하면서 새로운 데이터 저장소에 익숙하고 일관된 Spring 기반 프로그래밍 모델을 제공하는 것을 목표로 하는 Spring Data 프로젝트의 일부이다. Spring Data 프로젝트 중 가장 많이 사용되고 있는 JPA (Spring Data JPA) 와 비슷하게 사용할 수 있기 때문에 보다 익숙하고 쉽게 Elasicsearch에 접근할 수 있게 도와준다. Spring Data Elasticsearch 프로젝트는 Elasticsearch 검색 엔진과의 통합을 제공하며, 주요 기능 영역은 Elasticsearch 문서와 상호 작용하고 Repository Style Data Access 계층을 쉽게 작성하기 위한 POJO 중심 모델이다. P.. 2023. 9. 25.
[JPA] Entity와 Entity Manager & 영속성 컨텍스트 EntityManager는 JPA에서 Entity를 관리하고 DataBase와의 통신을 담당하는 인터페이스이다. EntityManager는 주로 Entity의 생명주기를 관리하고, Entity와 DataBase간의 상호 작용을 처리한다. 📌 영속성 컨텍스트란? 영속성 컨텍스트는 JPA에서 Entity객체들을 관리하는 논리적인 영역이다. System 영속성 컨텍스트 DataBase 이런 중개자 같은 개념으로 System에서 Entity가 DB에 바로 접근하지 않고, 영속성 컨텍스트에 의해 관리되며 Transaction단위로 commit, rollback 등의 작업을 수행한다. 캐싱, 쓰기 지연, 변경 감지 등의 기능으로 이미 조회한 데이터를 영속성 컨텍스트에서 가져오거나 직접적으로 DB에 접근하지 않기 때.. 2023. 9. 25.
[JPA] JPQL (Java Persistence Query Language) JPQL은 JPA에서 사용하는 객체지향적인 쿼리 언어로 JPQL을 사용하여 Entity객체를 대상으로 쿼리를 작성할 수 있다. 객체 중심 쿼리 언어: JPQL은 데이터베이스 테이블이 아닌 Entity객체를 대상으로 쿼리를 작성한다. SQL과 유사하지만 테이블이 아닌 Entity와 그 Entity의 속성을 사용한다. select, from, where, group by, having, order by 등 표준 SQL과 기본 문법은 같다. 특징: JPQL은 객체지향적이며 Entity객체를 대상으로 쿼리를 작성하기 때문에 데이터베이스에 종속적이지 않다. JPQL을 사용하면 Entity객체 사이의 관계를 활용하여 복잡한 쿼리도 작성할 수 있다. Query문에서 FROM [Entity] [EntityAlias] .. 2023. 9. 25.
[JPA] Query Method. 쿼리 메서드 Query Methods는 Spring Data JPA에서 제공하는 기능으로 DB에서 데이터를 조회(select), 저장(insert), 수정(update), 삭제(delete) 등의 작업을 쉽게 수행할 수 있다. QueryMethods는 메서드의 이름 자체로 쿼리를 생성하는 방식으로, 메서드 이름을 통해 JPA는 쿼리를 자동으로 생성하고 실행한다. 이를 통해 개발자는 복잡한 JPQL, QueryDSL 등과 같은 쿼리를 작성하지 않고도 간단한 메서드로 DB조작이 가능하다. 보통 데이터를 조회하는 용도로 사용된다. (delete, save 메서드 지원) 데이터 조회하기 메서드 이름 작성 규칙 메서드 이름은 "find", "read", "get"으로 시작해야 한다. "By" 다음에 엔터티의 속성 이름이 위치.. 2023. 9. 25.
[Java] Thread와 MultiThread이란? Java에서 Thread 클래스는 하나의 실행 흐름을 나타내는 것이다. 즉 하나의 프로그램이 여러 작업을 동시에 수행할 수 있게 해준다. Thread 사용 분야 GUI 응용 프로그램: UI업데이트와 동시에 백그라운드 작업 수행. (file down, data processing) 웹 서버: 각각의 클라이언트 요청을 별도의 스레드에서 처리하여 다중 사용자 지원. 게임 프로그래밍: 게임에서는 화면 업데이트, AI계산, 사운드 처리 등의 작업을 별도의 스레드에서 병렬로 처리해야 부드러운 동작을 유지할 수 있다. 네트워크 프로그래밍: 여러 클라이언트와 서버 간의 동시 통신을 처리해야 한다. 데이터베이스 작업: 데이터 연산 시간이 오래 걸릴 경우 별도의 스레드에서 처리 가능. 자연어 처리: 대용량 텍스트 데이터를.. 2023. 9. 24.
[Java] Quartz 스케줄러 Quartz는 Java로 작성된 오픈소스 스케줄링 라이브러리이다. Quartz를 사용하여 Java 애플리케이션에서 작업을 예약하고 관리할 수 있으며, 복잡한 작업 예약 및 스케줄링을 간편하게 처리할 수 있도록 도와준다. 라이브러리 추가. org.quartz-scheduler quartz 2.3.2 구조 Job - 실행할 작업을 나타내는 인터페이스로 execute 메서드를 구현하여 작업 내용을 정의한다. JobDetail - Job을 실행하기 위한 상세 정보를 가진 객체로, Job 클래스와 그룹명, JobData 등을 포함한다. Scheduler - 작업의 실행과 관리를 담당하는 핵심 컴포넌트로, JobDetail과 Trigger를 관리하여 작업을 스케줄링한다. Trigger - Job을 실행하는 시점을 .. 2023. 9. 24.
[Java] Gson이란? 💡Gson은 Java 객체를 Json 형식으로 변환하는데 사용할 수 있는 Java 라이브러리 이다. Gson은 Google에서 제공하는 java용 Json 라이브러리로, Java 객체를 Json 형식으로 직렬화(serialize), Json 형식의 데이터를 Java 객체로 역직렬화(deserialize)를 간단하게 할 수 있게 해준다. Gson을 사용하기 위해서는 라이브러리를 추가해줘야 한다. # Gradle dependencies { implementation 'com.google.code.gson:gson:2.10.1' } # Maven com.google.code.gson gson 2.10.1 Java 객체 -> Json 형식 직렬화 import com.google.gson.Gson; public .. 2023. 9. 24.
[CS] Regular Expression. 정규 표현식 💡정규 표현식이란? 정규 표현식(Regular Expression, RegExp)은 문자열에서 특정한 규칙(패턴)을 갖는 문자열을 찾거나, 대체하거나, 추출하는 데 사용되는 문자열 패턴의 표현 방법이다. 특징 - 일반적으로 텍스트 검색과 문자열 처리에 사용되며, 다양한 프로그래밍 언어에서 지원된다. - 특정한 패턴을 나타내는 문자열을 일괄적으로 처리하거나, 특정한 패턴에 대한 검색 또는 추출을 쉽게 수행할 수 있다. 문자 정규 표현식에서는 다양한 문자를 조합하여 표현할 수 있다. 1. 일반문자 a, b, c, ..., z, A, B, C, ..., Z: 알파벳 소문자와 대문자 0, 1, 2, ..., 9: 숫자 _, -, ., +, 등: 기호 2. 메타문자 . (점): 어떤 문자 하나와 일치합니다. (별.. 2023. 9. 23.
[CS] Garbage Collection. 가비지 컬렉션 💡가비지 컬렉션(Garbage Collection) 이란? 프로그램에서 동적으로 할당된 메모리 중에서 더 이상 사용하지 않는 메모리를 탐지하고 해제하는 자동화된 메모리 관리 기술이다. 사용 이유 프로그램에서 메모리를 사용하다보면, 메모리를 해제하는 코드를 작성하지 않으면 사용되지 않는 메모리가 계속 쌓여서 메모리 누수(Memory leak)가 발생할 수 있다. 이러한 문제를 해결하기 위해서 가비지 컬렉션은 필수적이다. 가비지 컬렉션은 프로그램에서 사용 중인 메모리 영역에서 더 이상 사용하지 않는 객체(인스턴스)를 탐지하고, 자동으로 해당 객체가 차지하고 있는 메모리를 해제한다. 이 과정에서 프로그램이 일시 중단되는 시간(Stop the World)이 발생할 수 있으며, 이 시간이 길어지면 성능 문제가 발.. 2023. 9. 23.
728x90