객체지향 패러다임 이해하기 - OOP의 기본 개념과 원칙
·
개발 노트/etc.
🚀 객체지향 프로그래밍 (OOP) 및 객체지향 패러다임💡 객체지향 프로그래밍이란?객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 설계 및 개발 방법론 중 하나로, 데이터와 그 데이터를 처리하는 방법을 하나의 객체로 묶어 관리하는 방식이다. 객체지향 프로그래밍은 소프트웨어를 여러 개의 독립적인 객체들의 상호작용으로 구성한다.📌 객체지향 프로그래밍의 주요 개념1. 클래스와 객체클래스: 객체를 정의하는 틀 또는 설계도. 객체의 속성과 행위를 정의한다.객체: 클래스를 기반으로 생성된 실체. 클래스의 인스턴스라고도 불린다.Car 클래스public class Car { String color; int speed; void accelerate() { ..
Hexagonal Architecture란?
·
개발 노트/etc.
Hexagonal Architecture란?Hexagonal Architecture(헥사고널 아키텍처)는 소프트웨어 설계의 한 방법론으로, 시스템을 다양한 독립적인 모듈로 나누어 각각의 모듈이 서로 독립적으로 개발되고 테스트될 수 있도록 하는 것을 목표로 한다. 이는 클린 아키텍처(Clean Architecture)나 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불린다. Alistair Cockburn에 의해 제안된 이 아키텍처는 애플리케이션의 핵심 비즈니스 로직을 외부 환경과 독립적으로 만들고, 다양한 외부 서비스나 사용자 인터페이스와의 통합을 유연하게 할 수 있도록 돕는다. Hexagonal Architecture의 주요 구성 요소1. 핵심 도메인 (Core..
GDG Campus Korea의 “GDG상사” 행사 후기: 새로운 경험과 배움의 장GDG Campus Korea의 “GDG상사” 행사 후기
·
기타
구글 스타트업 캠퍼스에서 열린 GDG Campus Korea의 행사에 다녀왔다. 이번 행사는 대학생 개발자를 위한 챕터인 GDG Campus Korea에서 주최한 특별한 이벤트로, 실제 회사에서의 업무 방식을 미리 경험해보고, 현업 멘토와의 네트워킹을 통해 개발 지식을 넓힐 수 있는 기회였다. 행사 소개GDG상사는 참가자들이 실제 회사에서 일하는 방식을 체험할 수 있도록 다양한 프로그램을 준비했다. 각 팀은 8명의 참가자와 1명의 멘토로 구성되었다.(아닌 팀도 있었다.) 나는 백엔드 개발자로서 알바 스쿼드 팀에 배정받았다. 이번 행사의 주요 목표는 중고거래 플랫폼인 GDG 상사를 더욱 발전시키기 위한 아이디어를 구체화하고, 실제로 구현해보는 것이었다. 알바 프로젝트 목표중고거래 플랫폼인 GDG 상사는 ..
유닛 테스트(Unit Test)란?
·
개발 노트/etc.
유닛 테스트란?유닛 테스트(Unit Test), 또는 단위 테스트는 소프트웨어 개발 과정에서 가장 기본적이고 중요한 테스트 기법 중 하나다. 유닛 테스트의 목적은 애플리케이션의 개별 구성 요소, 즉 "유닛"이 예상대로 작동하는지 확인하는 것이다. 일반적으로 유닛은 메소드, 클래스, 또는 모듈과 같은 작은 코드 단위를 의미한다. 왜 유닛 테스트를 해야 하는가?유닛 테스트는 여러 가지 이유로 중요하다:코드 품질 향상: 유닛 테스트를 작성하면 코드의 결함을 조기에 발견할 수 있어 전반적인 코드 품질을 높일 수 있다.디버깅 용이: 특정 유닛이 잘못된 동작을 할 경우, 해당 유닛을 빠르게 디버깅할 수 있다.안정성: 코드 변경이 기존 기능에 미치는 영향을 최소화할 수 있다.문서화: 테스트 코드는 코드베이스의 동작을..
JPA에서 N+1 문제
·
개발 노트/Spring
N+1 문제란?N+1 문제는 JPA나 ORM을 사용할 때 발생할 수 있는 성능 문제 중 하나다. 간단히 말해, 하나의 쿼리를 실행한 후 관련된 N개의 항목에 대해 추가로 N개의 쿼리가 실행되는 상황을 말한다. 예를 들어, 한 번의 조회 쿼리로 여러 개의 부모 엔티티를 가져온 후, 각 부모 엔티티와 관련된 자식 엔티티를 조회하기 위해 N번의 추가 쿼리가 실행되는 경우가 이에 해당한다. N+1 문제 예시Entity Class@Entitypublic class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "parent", fetch = FetchTy..
JPA에서 트랜잭션 처리 및 데이터베이스 격리 수준
·
개발 노트/Spring
트랜잭션이란?트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해 수행하는 일련의 연산들을 말한다. 트랜잭션은 데이터의 무결성과 일관성을 보장하기 위해 ACID 속성을 따른다.원자성(Atomicity): 트랜잭션 내의 모든 작업이 완벽하게 수행되거나 전혀 수행되지 않아야 한다.일관성(Consistency): 트랜잭션이 성공적으로 완료되면 데이터베이스는 일관성 있는 상태를 유지해야 한다.격리성(Isolation): 트랜잭션이 실행되는 동안 다른 트랜잭션의 영향을 받아서는 안 된다.지속성(Durability): 트랜잭션이 완료되면 그 결과는 영구적으로 반영되어야 한다. JPA와 트랜잭션 처리JPA에서 트랜잭션 관리는 주로 EntityManager를 통해 이루어진다. 하지만 Spring Da..