본문 바로가기

TIL/Spring16

23.07.26 ORM이 가지고 있던 문제와 해결 방법 상속 문제 : 매핑정보에 상속정보를 넣어준다. (@OneToMany, @ManyToOne) 관계 문제 : 매핑정보에 방향정보를 넣어준다. (@JoinColumn, @MappedBy) 탐색 문제 : 매핑/조회 정보로 참조탐색 시점을 관리한다. (@FetchType, fetchJoin()) 밀도 문제 : 크기가 큰 멤버 객체는 테이블을 분리하여 상속으로 처리한다. (@embedded) 식별성 문제 : PK 를 객체 Id로 설정하고 EntityManager는 해당 값으로 객체를 식별하여 관리 한다. (@Id, @GeneratedValue) ORM이 가지는 장점 1. 1차, 2차 캐시 1차 캐시 영속성 컨텍스트 내부에는 엔티티를 보관하는 저장소가 있는데 이를 1차 캐시라고.. 2023. 7. 26.
23.07.25 스프링 심화 주차로 넘어오면서 JPA에 대해 더 자세히 다루게 되었다. 모든 회사의 모든 프로젝트가 JPA 적용되어있는게 아니므로, ORM에 대해 알아야 할 필요가 있다. JDBC > QueryMapper > ORM(JPA)로 발전해오면서 각 기능을 포함하고 있기 때문에, 어떤 단점을 보완하기 위해 JPA가 생긴 것인지 알아야 제대로 쓸 수 있다. JDBC : JAVA와 DB를 연결해주기 위해 생긴 기술, JPA도 이 기술을 사용한다. JDBC Driver는 여러 데이터베이스와 연결할 수 있는 기능을 제공한다. JDBC Driver Manager는 런타임 시점에 Connection을 생성하여 쿼리를 요청할 수 있는 상태로 만들어주고, Statement를 생성하여 쿼리를 요청, ResultSet을 생성해 .. 2023. 7. 25.
23.07.12 통합 테스트 단위 테스트는 각 모듈이나 클래스에 대한 세심한 테스트가 가능하지만 모듈간의 상호 작용 검증은 할 수 없다. 이를 위해 두 개 이상의 모듈이 연결된 상태로 테스트하는 것이 통합 테스트다. 모듈 간의 연결에서 발생하는 에러를 검증할 수 있다. 단위 테스트 시 spring은 작동하지 않는데, @SpringBootTest 어노테이션을 통해 테스트 시 스프링을 작동시킬 수 있다. 즉, Spring IoC/DI 기능, Repository를 사용해 DB CRUD가 가능 유저별 api 요청 시간을 조회하는 기능을 추가하기 위해, Scratch 파일을 통해 알아보려고 한다. intellij > File > Scratch > Java 를 통해 만들고 아래와 같이 만든다. 생성하면 파일 리스트 최하단에 위치한.. 2023. 7. 12.
23.07.11 테이블 설계 옵션 카카오 User 를 위한 테이블 (ex. KakaoUser) 을 하나 더 만든다. 장점: 결합도가 낮아짐 성격이 다른 유저 별로 분리 → 차후 각 테이블의 변화에 서로 영향을 주지 않음 예) 카카오 사용자들만 profile_image 컬럼 추가해서 사용 가능 단점: 구현 난이도가 올라감 예) 관심상품 등록 시, 회원별로 다른 테이블을 참조해야 함 일반 회원: User - Product 카카오 회원: KakaoUser - Product 기존 회원 (User) 테이블에 카카오 User 추가 장점: 구현이 단순해짐 단점: 결합도가 높아짐 폼 로그인을 통해 카카오 로그인 사용자의 username, password 를 입력해서 로그인한다면?? 단위 테스트 버그는 발견 시간이 늦어질수록 비용이 급.. 2023. 7. 11.