본문 바로가기

전체 글

(118)
엔티티 매핑(Entity Mapping) JPA에서 엔티티 매핑은 객체 지향적으로 설계된 엔티티 클래스를 데이터베이스 테이블에 매핑하는 과정이다. JPA는 객체와 관계형 데이터베이스의 패러다임 불일치를 해결하기 위해 다양한 매핑 방식을 제공한다. 엔티티 클래스는 주로 테이블, 필드, 컬럼, 기본 키 등의 정보와 매핑되며, 이를 통해 JPA는 SQL을 자동으로 생성하고 데이터베이스와 상호작용한다. 1. @Entity@Entity는 JPA에서 필수적인 어노테이션으로, 해당 클래스가 JPA 엔티티임을 명시한다. JPA는 이 어노테이션이 선언된 클래스를 기준으로 매핑 정보를 설정하고 관리한다.특징@Entity가 선언된 클래스는 반드시 기본 생성자가 있어야 한다.(파라미터 없는 public/protected 생성자)클래스에 final, abstract,..
다익스트라 알고리즘 (Dijkstra's Algorithm) 다익스트라 알고리즘(Dijkstra's Algorithm)은 그래프에서 한 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘이다. 이 알고리즘은 주로 양의 가중치를 가진 그래프에서 사용되며, 그래프가 음의 가중치를 가진 경우에는 사용할 수 없다.다익스트라 알고리즘은 그리디 알고리즘(Greedy Algorithm)의 한 종류로, 각 단계에서 가장 비용이 적은 경로를 선택하면서, 그 경로를 확장하는 방식으로 진행된다.다익스트라 알고리즘의 동작 원리다익스트라 알고리즘의 핵심 아이디어는 각 노드에 대해 최단 경로를 점차적으로 확장해 나가는 것이다. 출발 노드에서 시작해 다른 모든 노드로 가는 최단 경로를 찾는 과정에서, 매번 가장 비용이 적은 노드를 선택해 최단 경로를 확정짓는다. 각 단계에서 방문하지 ..
영속성 관리 JPA에서 영속성 관리는 애플리케이션이 데이터베이스와 상호작용하는 객체(엔티티)를 어떻게 관리하고, 해당 데이터를 어떻게 데이터베이스에 반영할지 결정하는 중요한 개념이다. JPA의 영속성 관리는 데이터베이스와 메모리 사이에서 엔티티 객체를 효율적으로 관리하여 성능을 최적화하고 데이터 일관성을 유지하는 역할을 한다. 1. 엔티티 매니저 팩토리(EntityManagerFactory)와 엔티티 매니저(EntityManager)JPA에서 영속성 관리는 주로 EntityManager와 EntityManagerFactory를 통해 이루어진다. 이 두 가지는 JPA에서 핵심적인 역할을 하는 컴포넌트로, 각각의 역할과 기능을 이해하는 것이 중요하다. 엔티티 매니저 팩토리(EntityManagerFactory)Entit..
JPA란? SQL을 직접 다룰 때 발생하는 문제점과 패러다임 불일치JPA에 대해 설명하기 전에 애플리케이션에서 SQL을 직접 사용하여 데이터베이스와 상호작용할 때 발생하는 문제점과, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치에 대해 설명하겠다. 1. SQL을 직접 사용할 때 발생하는 문제점SQL과 코드의 결합: SQL을 직접 작성하게 되면 비즈니스 로직에 SQL이 얽히게 되어, 데이터베이스 변경이나 쿼리 수정 시 코드 수정이 필요하게 된다. 유지보수성이 떨어지며 코드의 가독성도 저하된다.반복적인 코드: CRUD(Create, Read, Update, Delete) 같은 작업에서 SQL 쿼리는 매우 반복적이다. 모든 테이블에 대해 비슷한 구조의 쿼리를 계속 작성해야 하는 번거로움이 있다.DB 종..
Spring boot 시작하기 스프링 부트는 스프링부트 스타터(https://start.spring.io/)라는 사이트를 이용하여 편리하게 프로젝트를 생성할 수 있다.스프틸 부트 스타터에서 다음과 같은 세팅을 설정한다.Project 선택 (Project Type)Maven 또는 Gradle 빌드 시스템을 선택할 수 있는 옵션이다.Maven은 전통적인 빌드 툴이며, Gradle은 더 빠르고 유연한 빌드 툴이다.Gradle은 Groovy 또는 Kotlin DSL을 사용해 프로젝트를 설정할 수 있다.Language 선택프로젝트에서 사용할 프로그래밍 언어를 선택한다.Java, Kotlin, Groovy 세 가지 언어를 지원하며, 기본적으로는 Java를 많이 사용한다.Spring Boot 버전 선택사용할 Spring Boot의 버전을 선택할 ..
Spring boot란? Spring Boot는 Spring Framework를 기반으로 한 애플리케이션 개발 플랫폼으로, 기존 Spring 애플리케이션 설정의 복잡함을 대폭 줄이고 더 빠르게 애플리케이션을 만들 수 있도록 돕는 도구이다. Spring Boot는 "Convention over Configuration" 철학을 따르며, 기본적인 설정을 미리 제공해 개발자가 코딩에만 집중할 수 있게 해줍니다. 주요 기능과 특징은 다음과 같다. 1. 자동 설정 (Auto Configuration)Spring Boot는 애플리케이션에 필요한 대부분의 설정을 자동으로 구성한다. 개발자가 복잡한 XML 설정 파일을 작성할 필요 없이, 필요한 의존성을 추가하면 Spring Boot가 자동으로 그에 맞는 빈(bean)과 설정을 생성해준다.예를..
백트래킹_순열 생성 (Permutation Generation) 순열(Permutation)은 주어진 원소들의 순서를 고려한 배열이다. 즉, 주어진 원소들의 모든 가능한 순서의 경우를 나열하는 것이 순열 생성이다. 주어진 원소가 n개라면, 순열의 개수는 n! (팩토리얼)개가 된다.예시:주어진 원소가 [1, 2, 3]일 때, 가능한 모든 순열은 다음과 같다:[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1] 순열 생성의 특징순열은 원소들의 순서를 바꾸어 다양한 조합을 만들기 때문에, 원소들의 순서가 매우 중요하다. 따라서 순열 생성 문제에서는 모든 원소를 한 번씩 사용하여 가능한 모든 경우를 나열하는 방식으로 접근해야 한다. 백트래킹을 이용한 순열 생성백트래킹을 사용한 순열 생성은 각 단계에서 아직 사용하지 않은 원소를 선..
낙관적 락(Optimistic Locking)과 비관적 락(Pessimistic Locking) 낙관적 락(Optimistic Locking)과 비관적 락(Pessimistic Locking)은 데이터의 동시성 제어 방법이다. 여러 프로세스나 트랜잭션이 동시에 데이터를 수정할 때, 데이터의 무결성을 보장하고 충돌을 방지하기 위해 사용된다. 이 두 방식은 락을 거는 시점과 접근 방식이 서로 다르며, 각각의 장단점이 있다. 1. 낙관적 락 (Optimistic Locking)개념낙관적 락은 데이터 충돌이 드물 것이라고 가정하는 방식이다. 즉, 여러 트랜잭션이 동시에 데이터를 읽고, 수정할 가능성이 낮다고 생각한다.데이터에 접근할 때 락을 걸지 않고, 수정하려고 할 때 충돌 여부를 확인한다.주로 읽기 작업이 많고 쓰기 작업이 적은 환경에서 적합하다.동작 방식데이터를 읽음: 트랜잭션은 데이터를 읽을 때 락..

728x90