Spring + JPA 공부하다 보면 거의 반드시 헷갈리는 개념이 있다.👉 DTO👉 Entity처음에는 대부분 이렇게 생각한다."둘 다 그냥 데이터 담는 객체 아닌가?"맞다.겉보기에는 비슷하다.근데 실무에서는:✔ 역할 완전히 다름✔ 사용 목적 다름✔ 생명주기 다름✔ 수정 방식 다름이 차이를 반드시 이해해야 한다.특히:Entity를 API 응답으로 그대로 반환했다가 실무에서 큰 문제 생기는 경우도 진짜 많다.오늘은 DTO vs Entity 차이를 초보자도 이해할 수 있게 쉽게 정리해보겠다.Entity 란?👉 DB 테이블과 매핑되는 객체즉:데이터베이스 중심 객체이다.예시@Entitypublic class User { @Id private Long id; private String nam..
JPA 공부하다 보면 거의 반드시 만나게 되는 성능 문제가 있다.👉 N+1 문제처음에는 코드가 정상 동작한다.근데 어느 순간:✔ SQL 엄청 많이 실행됨✔ API 응답 느려짐✔ DB 부하 증가✔ 서버 성능 급격히 저하문제가 발생한다.그리고 로그를 보면:SELECT ...SELECT ...SELECT ...SELECT ...쿼리가 끝없이 실행된다.실무에서도 진짜 자주 발생하는 대표적인 JPA 성능 문제다.오늘은 JPA N+1 문제 해결 방법을 초보자도 이해할 수 있게 쉽게 정리해보겠다.N+1 문제란?👉 조회 쿼리 1번 + 추가 쿼리 N번 실행되는 문제쉽게 말하면:데이터 하나 조회할 때마다추가 SQL 발생하는 상황이다.가장 대표적인 예제엔티티 구조@Entityclass Team { @Id Lo..
스프링(Spring) 공부를 시작하면 거의 가장 먼저 보는 어노테이션이 있다.👉 @Autowired처음에는 그냥 이렇게 사용한다.@Autowiredprivate UserService userService;그리고 대부분 이렇게 생각한다."신기하게 객체가 자동으로 들어오네?"맞다.근데 실무로 가면:✔ 어떻게 객체를 찾는지✔ Bean을 어떻게 주입하는지✔ 같은 타입 여러 개면 어떻게 되는지✔ 생성자 주입이 왜 좋은지이런 내부 원리를 반드시 이해해야 한다.오늘은 Spring의 @Autowired 동작 원리를 초보자도 이해할 수 있게 쉽게 정리해보겠다.@Autowired 란?👉 Spring이 객체를 자동으로 주입해주는 기능쉽게 말하면:"new 안 해도 객체 연결"해주는 기능이다.원래 자바 방식기존 자바는 직접..
스프링 + DB 작업하다 보면 어느 순간 마주치는 꽤 중요한 예외가 있다.👉 DataIntegrityViolationException이건 단순한 자바 문법 문제가 아니라,"데이터베이스 무결성(Integrity) 깨짐" 과 관련된 예외라서실무에서 반드시 이해하고 넘어가야 한다.DataIntegrityViolationException 이란?👉 "DB 제약 조건을 위반했을 때 발생하는 예외"즉,중복되면 안 되는 값이 들어왔거나 (UNIQUE)반드시 있어야 하는 값이 없거나 (NOT NULL)존재하지 않는 값을 참조했거나 (FOREIGN KEY)👉 이런 경우에 터진다.가장 흔한 원인 3가지1. UNIQUE 제약 위반 (중복 데이터)@Entitypublic class User { @Column(uniq..