전체 글 299

NullPointerException이란 무엇이며, 어떻게 해결할 수 있나?

NullPointerException(NPE)란?NullPointerException(NPE)은 Java에서 null인 객체를 사용하려 할 때 발생하는 런타임 예외임.NPE가 발생하는 경우null 객체의 메서드를 호출할 때 String str = null; int length = str.length(); // NPE 발생null 객체의 필드에 접근할 때 class Example { String text; } Example ex = null; System.out.println(ex.text); // NPE 발생null인 배열 요소를 사용할 때 String[] array = new String[5]; array[0].length(); // NPE 발생null이 포함된 리스트나 맵을 사용할 때 List lis..

Spring 2025.02.12

IntelliJ 단축키 모음(Window & Mac)

일반도구 창 열기Alt + #[0-9]⌘0...⌘9각 단축키에 해당하는 도구 창 열기 모두 저장Ctrl + S⌘S모든 파일 저장 동기화Ctrl + Alt + Y⌘⌥YIntelliJ가 파일 시스템에서 최신 변경 사항을 처리하도록 강제 편집기 최대화 토글Ctrl + Shift + F12⌘⇧F12편집기 영역을 최대 크기로 토글 현재 파일 검사Alt + Shift + I⌥⇧I현재 프로필 기준으로 현재 파일 검사 테마 변경Ctrl + `⌃`IntelliJ 테마 변경 설정 열기Ctrl + Alt + S⌘,설정 창 열기 프로젝트 구조 열기Ctrl + Alt + Shift + S⌘;프로젝트 구조 창 열기 액션 검색 및 실행Ctrl + Shift + A⌘⇧A액션을 검색하여 실행 실행 취소Ctrl + Z⌘Z실행 취소 다시..

Basic 2025.02.10

엔터프라이즈 시스템(Enterprise System)이란?

엔터프라이즈 시스템(Enterprise System, ES)은 대규모 조직(기업, 정부, 기관 등)에서 운영되는 정보 시스템으로, 기업의 핵심 비즈니스 프로세스를 지원하고 통합하는 역할을 한다. 이러한 시스템은 다양한 부서(재무, 인사, 영업, 공급망 관리 등)가 원활하게 협업할 수 있도록 데이터와 프로세스를 통합하는 것이 목표다.1. 엔터프라이즈 시스템의 주요 특징① 대규모 데이터 처리기업 전반의 데이터를 관리하며, 수많은 사용자가 동시 접속 가능해야 함고가용성(High Availability) 및 확장성(Scalability) 필요② 복잡한 비즈니스 로직단순 CRUD 이상의 복잡한 트랜잭션, 권한 관리, 승인 프로세스 등을 포함③ 다중 사용자 지원수백~수천 명의 직원이 동시에 사용할 수 있도록 설계부..

Architecture 2025.02.07

WildFly vs Tomcat: 공통점과 차이점 비교

✅ 1. 공통점 (Similarities)WildFly와 Apache Tomcat은 둘 다 Java 기반의 애플리케이션 서버이지만, 몇 가지 공통적인 기능이 있다. 공통점오픈소스둘 다 무료로 사용할 수 있으며, 오픈소스 커뮤니티에서 관리Java 기반Java 애플리케이션을 실행할 수 있음Servlet 지원Java Servlet API와 JSP(JavaServer Pages) 실행 가능HTTP 기반기본적으로 HTTP 요청을 처리하며, 웹 애플리케이션 실행 가능경량 서버 가능필요에 따라 경량화하여 사용할 수 있음 (Tomcat은 기본적으로 경량, WildFly는 설정에 따라 가능)  ❌ 2. 차이점 (Differences)둘의 가장 큰 차이점은 지원하는 Java 기술의 범위와 사용 목적입니다.🔹 기능 및 기..

Server 2025.02.07

SQL 기초 & 자주쓰는 쿼리문 정리

📌 SQL 자주 쓰는 쿼리문쿼리문은 어떤 것을 제어하느냐에 따라, 데이터베이스 제어문, 테이블 제어문, 데이터 제어문으로 나눌 수 있다. 자주 쓰는 구문만 간단하게 살펴보자.데이터베이스 다루기-- 모든 데이터베이스 조회SHOW DATABASES;-- 데이터베이스 생성CREATE DATABASE practice DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;-- 데이터베이스 삭제DROP DATABASE IF EXISTS practice;테이블 다루기-- 테이블 조회하기use mysql;SHOW TABLES;-- 테이블 구조 확인하기DESC [테이블명];-- 테이블 생성하기CREATE DATABASE practice DEFAULT CHARACTER SET utf..

SQL 2025.02.07

@EqualsAndHashCode 사용 시 엔티티 간 무한 루프 발생 가능성에 대한 원인과 해결

무한 루프 발생 원인JPA 엔티티에서 연관 관계가 있을 때 @EqualsAndHashCode는 모든 필드를 비교하려고 한다.이때 서로를 참조하고 있는 경우 무한 루프가 발생할 수 있다. @Entity@Getter@EqualsAndHashCodepublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "user") private List orders;}@Entity@Getter@EqualsAndHashCodepublic class Order { @Id @GeneratedValue(strategy = GenerationTyp..

Spring 2025.02.06

JPA 엔티티에서 Lombok 사용 시 프록시 초기화 문제

JPA는 Lazy Loading을 사용할 경우 엔티티를 프록시 객체로 감싼다.Lombok의 @ToString, @EqualsAndHashCode는 모든 필드를 참조하는데, 이때 프록시 필드를 접근하려 하면 예외가 발생하게 된다. 예시@Entity@Getter@ToStringpublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "user", fetch = FetchType.LAZY) private List orders;} 문제 발생User user = userRepository.findById(1L).get();System.out..

Spring 2025.02.06

Lombok과 JPA 충돌 가능성 & 해결 방법

JPA 엔티티에서 Lombok을 사용할 때 충돌이 발생할 수 있는 대표적인 원인은:프록시 초기화 문제Setter 자동 생성으로 인한 객체 일관성 문제@EqualsAndHashCode로 인한 무한 루프Lombok을 안전하게 사용하는 방법✅ 필수적으로 사용하면 안 되는 어노테이션@Builder → 대신 @AllArgsConstructor + 정적 메서드 사용@EqualsAndHashCode → 대신 @Id 기반의 equals() 직접 구현@Setter → 대신 명시적인 변경 메서드 작성✅ 안전한 대체 방법@Entity@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class User { @Id @GeneratedValue(strat..

Spring 2025.02.06

Buyme Jmeter 락 X / 낙관적 락 / 분산락 / 테스트 결과

Case 3,4)트래픽의 부하가 심하지 않은 경우(User 5000, Ramp-up period 15sec~60sec) 락 사용 전과 낙관적 락 사용 후의 응답속도와 Throughtput 은 비슷하다는 것을 볼 수 있다. Case 1,2)하지만, 대규모 트래픽을 처리해야 할 때 (User 10000, Ramp-up period 5sec~10sec) 낙관적 락을 사용하는 경우 성능은 사용하기 전에 비해 다음과 같이 개선된다, Case 1 Create Order응답 시간: 1,417ms 개선 (29.6% 향상)처리량: 82.3건/초 증가 (29.3% 향상)Attempt Payment응답 시간: 3,187ms 개선 (40.3% 향상)처리량: 60.0건/초 증가 (30.2% 향상)Check Stock응답 시간:..

Buyme TIL240828 jpa 쿼리오류 / docker-compose 환경설정 / 로컬의 properties , docker-compose 환경설정 관련 학습

order-server gradle build 시 코드에러 전문OrderServiceApplicationTestsall > com.example.buyme.order > OrderServiceApplicationTests1tests1failures0ignored0.005sduration0%successfulFailed testsTestsStandard outputStandard error00:40:25.713 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.ex..