JPA에서 변경 감지와 병합(Merge) 이해하기
·
🌿 Framework/Spring
1. 영속성 컨텍스트와 준영속 엔티티란?영속성 컨텍스트(Persistence Context)JPA에서는 엔티티(Entity)를 관리하는 환경을 영속성 컨텍스트(Persistence Context)라고 합니다. 영속성 컨텍스트는 엔티티의 생명 주기를 관리하며, 데이터베이스와의 동기화를 자동으로 처리하는 중요한 역할을 합니다.준영속 엔티티(Detached Entity)준영속 엔티티(Detached Entity)란, 한 번 영속 상태(Persistent State)였다가 현재는 영속성 컨텍스트에서 관리되지 않는 엔티티를 의미합니다.예를 들어, 데이터베이스에서 조회된 Book 객체가 존재하는데, 트랜잭션이 종료되거나 영속성 컨텍스트에서 분리되면 해당 객체는 준영속 상태가 됩니다. 이러한 객체를 다시 수정하려면 ..
OOP(Object-Oriented Programming)의 4대 원칙과 SOLID 5대 원칙 정리
·
🗨️ Language/Java
OOP의 4대 원칙 1. 캡슐화 (Encapsulation)데이터 보호를 위해 클래스의 속성을 private으로 설정하고, getter와 setter 메서드를 통해 데이터에 접근하도록 한다. 이를 통해 객체의 내부 상태를 외부에서 직접 변경하지 못하게 하여 데이터 무결성을 유지할 수 있다.2. 추상화 (Abstraction)추상화는 복잡한 시스템의 세부 사항을 숨기고, 필요한 부분만을 드러내는 개념이다. 이를 통해 코드 재사용성을 높일 수 있다. abstract class와 interface를 활용하여 공통적인 기능을 정의하고, 이를 구현하는 다양한 클래스에서 재사용할 수 있다.3. 다형성 (Polymorphism)다형성은 같은 인터페이스나 부모 클래스의 메서드를 다양한 방식으로 구현할 수 있게 해주는 ..
H2 Database란? 빠르고 가벼운 테스트 DB의 모든 것
·
🗨️ Language/Java
📌 H2 Database란?H2 Database는 Java 기반의 경량 인메모리 데이터베이스로, 빠른 속도와 쉬운 설정이 장점인 RDBMS(Relational Database Management System)이다. Spring Boot 및 다양한 Java 애플리케이션에서 테스트용 데이터베이스로 많이 활용된다.🔹 H2 Database의 특징✅ 경량 데이터베이스: 파일 기반 또는 인메모리 모드로 동작하며, 설치가 간단하고 가볍다.✅ 빠른 속도: 인메모리 모드에서는 높은 성능을 제공하여 테스트 및 개발 환경에서 효과적이다.✅ ANSI SQL 지원: 표준 SQL을 지원하여 MySQL, PostgreSQL 등과 유사한 쿼리 작성이 가능하다.✅ Java 기반: Pure Java로 작성되어 있어 플랫폼 독립적이다..
JPA란? 개념, 영속성 컨텍스트, JPQL까지 한번에 정리
·
🌿 Framework/Spring
JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 쉽게 다룰 수 있도록 도와주는 ORM(Object-Relational Mapping) 기술이다. 즉, SQL을 직접 작성하지 않고 자바 객체를 통해 데이터베이스와 상호작용할 수 있도록 해준다.✅ JPA의 주요 개념1. ORM(Object-Relational Mapping)JPA는 ORM 기술을 기반으로 동작하며, 객체와 관계형 데이터베이스 테이블을 매핑하는 역할을 한다. 이를 통해 SQL을 직접 다루지 않아도 객체를 활용하여 데이터를 저장하고 조회할 수 있다.2. 엔티티(Entity)JPA에서 데이터베이스 테이블과 매핑되는 자바 객체를 "엔티티"라고 한다. 엔티티 클래스는 @Entity 어노테이션을 사용하여 정의한..
[OneStack]팀 프로젝트 개발 과정 - WebSocket 실시간 채팅
·
📋 Project/OneStack
본 프로젝트 개발자 과정 학원의 파이널 프로젝트 기획, 개발, 배포 과정을 담고 있습니다.   OneStack원스택회원 너무 좋아요 작성자 : 서윤달콤 ⭐️ ⭐️ ⭐️ ⭐️ ⭐️www.onestack.store📌 WebSocket이란?WebSocket은 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜입니다. HTTP와 달리 연결을 유지하면서 실시간으로 데이터를 주고받을 수 있는 장점이 있습니다.✅ WebSocket의 장점실시간 양방향 통신: 서버와 클라이언트가 자유롭게 데이터를 주고받을 수 있음낮은 지연 시간: 기존 HTTP 요청/응답 방식보다 빠른 데이터 전송효율적인 서버 리소스 사용: 연결 유지로 인한 반복적인 요청 오버헤드 감소최적화된 데이터 전송: 헤더 크기가 작아 네트워크 비용 절..
[OneStack]팀 프로젝트 개발 과정 - JavaMailSender 비밀번호 재설정
·
📋 Project/OneStack
본 프로젝트 개발자 과정 학원의 파이널 프로젝트 기획, 개발, 배포 과정을 담고 있습니다.   OneStack예린더쿠 최고였어요! 작성자 : Kyle ⭐️ ⭐️ ⭐️ ⭐️ ⭐️www.onestack.store 📧 JavaMailSender란?JavaMailSender는 Spring Framework에서 제공하는이메일 발송 기능을 쉽게 구현할 수 있도록 지원하는 인터페이스입니다.SMTP 설정을 활용하여 메일 서버에 연결하고 HTML 템플릿을 적용할 수 있으며, 비동기 메일 발송도 가능합니다.✅ JavaMailSender의 주요 기능SMTP 서버를 이용한 메일 발송HTML 템플릿 지원 (Thymeleaf 등 활용 가능)첨부 파일 전송 기능 제공비동기 메일 발송 가능🛠 비밀번호 재설정 기능 구현비밀번호 재..
[OneStack]팀 프로젝트 개발 과정 - OAuth2 소셜 로그인
·
📋 Project/OneStack
본 프로젝트 개발자 과정 학원의 파이널 프로젝트 기획, 개발, 배포 과정을 담고 있습니다.   OneStack예린더쿠 최고였어요! 작성자 : Kyle ⭐️ ⭐️ ⭐️ ⭐️ ⭐️www.onestack.store 1. 소셜 로그인이 필요한 이유소셜 로그인은 사용자의 편의성을 높이고 보안을 강화하는 중요한 기능이다. 이를 통해 다음과 같은 장점을 얻을 수 있다.사용자 편의성: 별도의 회원가입 없이 기존 계정으로 빠르게 로그인할 수 있다.신뢰성 향상: 검증된 플랫폼의 인증 시스템을 활용할 수 있다.개발 효율성: 보안 인증 로직을 외부 플랫폼에 위임할 수 있어 유지보수가 용이하다.2. 전체 로그인 프로세스소셜 로그인 구현에 앞서 전체적인 로그인 프로세스를 살펴보자.사용자가 카카오 또는 구글 계정을 이용해 로그인 ..
Spring WebSocket과 STOMP, 그리고 Kafka를 활용한 실시간 통신
·
🗨️ Language/Java
1. 웹소켓(WebSocket)이란?1.1 웹의 기본 통신 방식: HTTP의 한계웹 애플리케이션에서 서버와 클라이언트 간의 데이터 교환은 일반적으로 HTTP를 사용한다. 하지만 HTTP는 비연결성(stateless) 프로토콜로, 클라이언트가 요청을 보내야만 서버가 응답하는 단방향 통신 방식이다.이 방식은 실시간성이 중요한 애플리케이션(예: 채팅, 주식 거래, 알림 서비스 등)에서는 비효율적이다. 주기적으로 서버에 요청을 보내는 폴링(Polling), 롱 폴링(Long Polling), 서버 센트 이벤트(Server-Sent Events, SSE) 같은 기술이 사용되지만, 성능과 확장성에서 한계가 있다.1.2 웹소켓(WebSocket)의 등장웹소켓은 클라이언트와 서버 간에 지속적인 연결을 유지하며 양방향 ..
Git Flow 완벽 정리: 협업과 배포를 위한 Git 브랜치 전략
·
🌐 Web
Git Flow는 기능 개발, 배포, 유지보수 등의 작업을 효율적으로 관리할 수 있도록 설계된 Git 브랜치 전략입니다. 특히, 팀 프로젝트나 지속적인 배포(CI/CD) 환경에서 유용하게 활용됩니다. 1. Git Flow의 핵심 개념Git Flow에서는 총 5가지 주요 브랜치를 사용하여 코드 변경을 효과적으로 관리합니다.✅ Main 브랜치 (main or master)배포(Release)된 최종 안정적인 코드가 있는 브랜치직접 수정하지 않으며, develop 브랜치에서 검증된 코드만 병합됨✅ Develop 브랜치 (develop)기능 개발을 진행하는 브랜치feature 브랜치에서 개발된 코드가 머지되며, 이 브랜치를 기준으로 release 브랜치가 생성됨✅ Feature 브랜치 (feature/)새로운 ..
JWT (JSON Web Token)란? 쉽게 이해하기
·
🌐 Web
웹 애플리케이션을 개발하다 보면, 로그인한 사용자의 정보를 유지해야 할 때가 많다.과거에는 세션(session)을 사용했지만, 최근에는 JWT (JSON Web Token)이 널리 사용되고 있다.그렇다면 JWT가 무엇이고, 어떻게 동작하는지 정리해보자.1. JWT란 무엇인가?JWT(JSON Web Token)는 사용자의 인증 정보를 안전하게 전송하기 위한 토큰 기반 인증 방식이다.쉽게 말해, 로그인하면 사용자의 정보를 암호화된 토큰 형태로 발급하여 클라이언트가 저장하고,이후 요청할 때마다 토큰을 보내 인증을 처리하는 방식이다.✅ JWT는 자체적으로 사용자 정보를 포함하기 때문에, 별도의 세션 저장소가 필요 없음✅ RESTful API와 잘 맞는 인증 방식 → 서버가 사용자의 상태를 유지하지 않아도 됨 (..
Kyle99
'분류 전체보기' 카테고리의 글 목록