2025/02 15

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