[JPA] JPQL과 페치 조인
JPQL (Java Persistence Query Language) JPQL란? 테이블이 아닌 객체를 검색하는 객체지향 쿼리 --SQL: 테이블 대상 SELECT * FROM MEMBER WHERE USERNAME = 'kim'; --JPQL: 엔티티 객체 대상 SELECT m FROM Member m WHERE m.username = 'ki...
JPQL (Java Persistence Query Language) JPQL란? 테이블이 아닌 객체를 검색하는 객체지향 쿼리 --SQL: 테이블 대상 SELECT * FROM MEMBER WHERE USERNAME = 'kim'; --JPQL: 엔티티 객체 대상 SELECT m FROM Member m WHERE m.username = 'ki...
Proxy 프록시란? 실제 엔티티 대신 사용되는 가짜 객체 // DB를 통해 실제 엔티티 객체 조회 Member member = em.find(Member.class, 1L); // DB조회를 미루는 가짜 프록시 엔티티 객체 조회 Member member = em.getReference(Member.class, 1L); System.out.p...
객체와 테이블의 연관관계 차이 테이블의 연관관계 테이블은 외래키 하나로 양방향 조회가 가능하다. -- MEMBER 테이블 ID (PK) USERNAME TEAM_ID (FK) -- TEAM 테이블 ID (PK) NAME -- 양방향 조회가 모두 가능 -- 멤버 → 팀 조회 SELECT * FROM MEMBER M JOIN TEAM T ON M...
JPA(Java Persistence API) SQL 없이 객체를 데이터베이스에 직접 저장할 수 있게 하고, 객체와 관계형 데이터베이스를 명확히 구분해준다. 즉, 중간에서 매핑 역할을 수행하는 ORM(Object-Relational Mapping) 기술의 표준 인터페이스이다. 객체지향과 관계형 데이터베이스의 패러다임 불일치를 해결해준다. ...
점점 비대해지는 savePlan 공급사 점검계획 등록/수정 기능을 만들다가 요구사항이 추가되면서 하나의 메서드에 모든 로직이 쌓이기 시작했다 // 최초저장 if (vo.getPlanId() == null || vo.getPlanId().isEmpty()) { planRepository.save(vo); processAddedSchedu...
User 엔티티의 문제점 엔티티는 도메인 모델이자 비즈니스 로직과 상태만 가져야 한다. 하지만 기존 코드는 SRP와 DIP를 위반하고 있었다. public static User register(UserDto dto, UserValidator validator, PasswordEncoder passwordEncoder) { validator....
DDD 전체 구조 전략적 설계 (Strategic Design) “무엇을 만들 것인가?” - 큰 그림 관점 1. 유비쿼터스 언어 (Ubiquitous Language) 개발자, 기획자, 도메인 전문가가 똑같은 용어로 소통 예: 경매 시스템 “입찰한다” → placeBid() “낙찰된다” → closeAuction() “재등록한다...
Factory method “객체를 어떻게 만드는지” 보다 “왜/언제 만들어 지는지” 를 드러내고 복잡한 생성과정을 감추는 역할 Factory method의 장점 생성 로직이 복잡한 경우 new User(username, email, password, …) 같이 끝나지 않고 암호화, 중복체크, 값 객체 조립 같이 여러 단...
순회란? 자료구조에서의 순회는 자료구조에 들어있는 데이터를 차례대로 접근해 처리하는 것을 순회라 한다. ArrayList, LinkedList, HashSet, Set, Tree 등 다양한 자료구조가 있는데 각 자료구조마다 순회하는 방법이 모두 다르기 때문에 자바는 자료구조의 구현과 상관없이 모든 자료 구조를 동일한 방법으로 순회할 수 있는 Ite...
Map Map은 Key-Value 의 쌍을 저장하는 자료구조 Key는 유일, Value는 중복 가능 같은 Key로 저장하면 Value 교체 순서를 유지하지 않음 HashMap, LinkedMap, TreeMap 등 다양한 구현체 제공 (HashMap이 가장 널리 쓰인다) Map 인터페이스의 주요 메서드 - 자바 공식문서 Ha...