전체 글(93)
-
Junit
JUnit 은 Java 에서 사용하는 대표적인 단위 테스트(Unit Test) 프레임워크이다.메서드나 클래스 단위의 기능이 정상적으로 동작하는지 자동으로 검증하기 위해 사용한다.사람이 직접 실행하는 테스트 ❌코드로 자동 실행 ✅CI/CD 에서도 많이 사용테스트 코드를 작성하면 기능 수정 후 기존 기능이 깨졌는지 빠르게 확인할 수 있다.사람이 매번 직접 테스트하는 것보다 훨씬 빠르고 신뢰성이 높다.키워드회귀 테스트 (Regression Test)유지 보수자동화안정성[1] @Test이 메서드가 테스트라는 의미[2] assertXXXassertEqualsassertTrueassertFalseassertNullassertNotNull[3] @BeforeEach테스트마다 실행된다. 매번 객체 생성 안해도 된다.[..
2026.07.22 -
DB 조인이냐, UUID 를 통한 조회냐
이용약관과 회원 이용약관 동의 테이블을 만드는 방식에는다대다 관계를 중간 테이블로 연결하는 방식 ✅DB 조인이나 JPA 연관관계 없이 약관 동의 중간 테이블에 memberUuid 만 저장해서 각자 조회하는 방식memberUuid 만 저장해서 연결하는 방식 ❌으로 3가지가 있다. [1] 다대다 관계를 중간 테이블로 연결하는 방식 ✅회원 한 명은 여러 약관에 동의할 수 있고, 하나의 약관에는 여러 회원이 동의할 수 있으므로 논리적으로 다대다이다.장점 :약관별 동의 여부와 이력을 정확하게 관리할 수 있다.약관 버전 관리가 가능하다.새로운 버전이 나오면 회원이 어느 버전에 동의했는지도 확인할 수 있다.또한, DB 외래 키를 걸 수 있어서 데이터 무결성이 좋아진다.단점 :테이블과 엔티티가 하나 더 생겨서 구조가..
2026.07.14 -
FetchType.EAGER or LAZY (즉시로딩과 지연로딩)
예시 : Post 와 Member 가 다대일(N:1) 관계일 때(1명의 회원이 게시글을 여러 개 쓸 수 있기 때문이다.) Lazy Loading 은 필요할 때 가져오는 것이고,Eager Loading 은 처음부터 같이 가져오는 것이다. Lazy Loading 이 N+1 문제를 해결할 수는 없다.Lazy Loading 의 목적은 N+1 문제를 해결하는 것이 아니라,"필요 없는 데이터를 가져오지 않는 것"이다. 추가로, N+1 문제를 해결할 수 있는 방법에는- Fetch Join- Entity Graph- QueryDSL 의 fetchJoin()같은 조회 전략이 있다. 우선 이렇게까지 이해했는데,추후에 좀 더 자세하게 공부해 볼 예정이다.
2026.07.03 -
[Java] 중복 불가 Collection : Set - HashSet
Set 은 중복을 허용하지 않는 컬렉션이다.같은 값을 여러 번 넣어도 한 번만 저장된다. Set set = new HashSet(); Set 중 가장 많이 사용하는 구현체가 HashSet (순서 X) 이다.그 외에도 LinkedHashSet (입력 순서 유지), TreeSet (자동 정렬) 이 있다. Set 에서 자주 사용하는 메서드는- add() : 추가- size() : 개수- contains() : 존재 여부- remove() : 삭제- clear() : 모두 삭제
2026.07.01 -
[Java] Record 타입
1. record 는 DTO 를 간결하게 만들기 위한 문법이다.2. 모든 필드는 자동으로 private final 이 된다.3. Setter 와 기본 생성자는 없다. ⇒ 불변 객체를 만들기 위함4. Getter 이름이 필드명이다. ⇒ Getter 는 get필드명() 가 아니라 필드명() 형태다.5. JPA Entity 에는 사용하지 않고, Request/Response DTO 에 사용하는 것이 일반적이다. DTO 나 VO 처럼 "데이터만 들고 다니는 객체"를 만들 때 사용하는 문법이다.
2026.06.29 -
Comparator 와 람다식
- Comparator : 정렬 기준- 람다식 (lambda) : 기준을 짧게 쓰는 문법 1. Comparator : 두 값을 비교해서 어떤 게 앞에 올지 정하는 규칙Arrays.sort(strings, comparator); // strings : 정렬할 배열 // comparator : Comparator 객체 - comparator : 정렬 기준두 값을 비교해서 int 를 반환한다. 음수 → a 가 앞 / 0 → 순서 같음 / 양수 → b 가 앞 - Arrays.sort() 메서드의 형태는Arrays.sort(T[] a, Comparator c) 2. 람다식 (lambda) : 메서드가 하나뿐인 인터페이스Arrays.sort(strings, (a, b) -> { if(a.charAt(n) =..
2026.06.26