자바 개발하다 보면 한 번쯤은 마주치는 예외가 바로 IllegalArgumentException 이다. 처음 보면 이름부터 좀 어렵게 느껴지는데, 사실 개념 자체는 굉장히 단순하다.IllegalArgumentException 이란?말 그대로 "잘못된 인자(Argument)가 들어왔을 때 발생하는 예외" 다.쉽게 말해서메서드에 넘긴 값이 말이 안 될 때 터진다고 보면 된다.예를 들어 이런 상황이다.나이는 0 이상이어야 하는데 -10을 넣었다문자열 길이가 최소 5여야 하는데 2짜리를 넣었다null이 들어오면 안 되는데 null을 넣었다이럴 때 개발자가 직접 이 예외를 던져서 "야 이 값 이상해!" 라고 알려주는 용도로 많이 쓴다.기본 사용 예제가장 간단한 코드부터 보자.public class Main { ..
자바를 조금이라도 해봤다면무조건 한 번은 마주쳤을 에러가 있다. 바로 NullPointerException(NPE) 처음엔 단순하다.“아 null이라서 터졌네” 그런데 실무에서는 이야기가 완전히 달라진다. 어디서 null이 들어왔는지 모름재현이 안 됨로그만 보고 추적해야 함그래서 NPE는가장 흔하지만, 가장 짜증나는 에러 1위다. 1️⃣ NPE란 무엇인가NPE는 한 줄로 정리하면 이거다. null인 객체를 사용하려고 할 때 발생하는 예외예시를 보면 바로 이해된다.String name = null;name.length(); // 여기서 터짐name이 null인데length()를 호출했기 때문에 예외 발생 2️⃣ 왜 null이 생기는가 (핵심 원인)여기서부터가 중요하다.실무에서는 “왜 null이 됐는지”가..
JPA를 공부하다 보면 반드시 마주치는 개념이 있다.바로 LAZY 로딩이다. 처음에는 단순히“지연 로딩? 나중에 가져오는 건가?”정도로 이해하고 넘어가기 쉽다. 그런데 실무에서는 이거 하나 때문에성능이 10배 이상 차이 나기도 하고장애까지 이어지는 경우도 많다. 그래서 이번 글에서는개념 → 동작 원리 → 실무 문제 → 해결 방법까지한 번에 정리해보려고 한다. 1. LAZY 로딩이란 무엇인가LAZY 로딩은 말 그대로필요할 때까지 데이터를 조회하지 않는 방식이다. 예를 들어, 회원(User)과 주문(Order)이 있다고 가정해보자.@ManyToOne(fetch = FetchType.LAZY)private User user;이렇게 설정하면, Order를 조회할 때 User는 가져오지 않는다.실제로 user를 ..
개발 공부를 하다 보면 한 번쯤은 반드시 마주치는 단어가 있다.바로 JPA다. 처음 이걸 접했을 때 솔직히 이런 생각이 들었다.“SQL 쓰면 되는데 왜 굳이 이걸 써야 하지?” 그런데 조금만 깊이 들어가 보면,이건 단순한 라이브러리가 아니라개발 방식 자체를 바꾸는 기술이라는 걸 알게 된다. 특히 Spring Boot 기반으로 백엔드를 개발한다면JPA는 선택이 아니라 거의 필수에 가깝다. 1. JPA를 한 문장으로 정리하면JPA는 자바 객체와 데이터베이스를 연결해주는 기술이다. 조금 더 풀어서 말하면,SQL을 직접 작성하지 않고도객체를 통해 데이터를 저장하고 조회할 수 있게 해준다. 예를 들어 기존 방식이라면:SELECT * FROM user WHERE id = 1;JPA를 사용하면 이렇게 바뀐다.User..