전체 글
-
[JPA] 다양한 연관관계 매핑인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 27. 12:13
다대일 [N:1] - 가장 많이 사용하는 연관관계로 연관관계의 주인과 외래키가 다쪽에 있는 경우 - 단방향 매핑을 우선적으로 하고 필요한 경우 양방향을 적용하면 된다. 일대다 [1:N] - 일쪽에 연관관계의 주인이 있는 경우 (테이블은 항상 다쪽에 외래키가 존재함) - 일대다(일이 연관관계의 주인인 경우)에서는 업데이트 쿼리가 추가적으로 나가야 하는 문제와 일쪽을 수정해도 다쪽에 외래키가 있기 때문에 내가 수정한 엔티티와 쿼리가 날라간 테이블이 맞지 않는다는 문제가 발생한다. - 업데이트 쿼리가 추가적으로 나가야 하는 이유는 연관관계 주인과 외래키가 있는 테이블이 다르기 때문이다. 예제 코드 Department(1) : Student(N) - 만약 여기서 @JoinColumn을 사용하지 않으면 조인 테이..
-
[JPA] 연관관계 매핑 기초인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 27. 10:58
- 연관관계의 주인이라는 개념은 양방향 연관관계에서만 사용되는 개념이다. (테이블은 외래키로 테이블을 조인하기 때문에 방향이라는 개념이 없음) - 연관관계의 주인만이 외래 키를 관리(등록, 수정)하고 주인이 아닌 쪽은 읽기만 가능하다 - 주인이 아니면 mappedBy 속성으로 주인 지정 - 실제로 연관관계의 주인쪽만 세팅을 해도 db에 제대로 반영되지만 트랜잭션 커밋전에 연관관계의 주인이 아닌 쪽에서 데이터를 가져오는 경우 1차 캐시에서 데이터를 가져오게 되고 이 경우에는 데이터 세팅이 되어 있지 않기 때문에 양방향 연관관계 편의 메서드를 이용하여 양쪽 모두 세팅하는 것이 순수 객체 관점에서는 적합하다. (데이터를 변경하는 경우 리스트쪽에서는 기존 값을 삭제하고 새로운 값을 추가하는 등을 고려해야 한다...
-
[JPA] 엔티티 매핑인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 27. 09:16
출처: 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자 www.inflearn.com
-
[JPA] 영속성 관리 - 내부 동작 방식인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 25. 18:28
영속성 컨텍스트 - 엔티티를 영구 저장하는 환경 - 논리적인 개념으로 엔티티 매니저를 통해 접근 출처: 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자 www.inflearn.com
-
[JPA] JPA의 구동방식과 JPQL인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 25. 18:10
출처: 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자 www.inflearn.com
-
[JPA] JPA(Java Persistence API) 소개인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 25. 16:56
SQL 중심 개발의 문제점 - 자바 객체를 SQL로 SQL을 자바 객체로 변환하는 코드로 인해 생산성 저하, 유지보수 힘든 코드 작성 - 객체와 관계형 데이터베이스 간의 패러다임 불일치(상속, 연관관계, 데이터 타입, 데이터 식별 방법 등) - 객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까? JPA 소개 - 자바 진영의 ORM(Object-relational mapping) 기술 표준 ORM이란? - 객체와 관계형 데이터베이스를 매핑해주는 기술 - 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고 ORM 프레임워크가 중간에서 이를 매핑해준다. 출처: 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 https://www.inflearn.com/co..
-
[Test] 테스트 코드 디버깅 하기개발 지식/Test 2023. 11. 23. 14:33
@WebMvcTest 사용 시 어떤 빈들이 등록될까? 확인 방법 1. 메서드 내부에 브레이크 포인트를 찍고 디버깅 모드를 실행한다. 2. mockMvc(MockMvc) - servlet(TestDispatcherServlet) - webApplicationContext(GenericWebApplicationContext) - beanFactory(DefaultListableBeanFactory) - beanDefinitionNames(ArrayList) 에서 확인할 수 있다. MockMvc: 웹 애플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC 환경을 만들어 요청 및 전송, 응답기능을 제공해주는 유틸리티 클래스 디버깅 장점 및 꿀팁 1. 당연한 이야기지만 동적인 객체 의존성을 확인할 수 있..
-
[Test] @WebMvcTest 에서 403 에러 해결하기개발 지식/Test 2023. 11. 23. 13:11
문제 상황 - 스프링 시큐리티를 적용하기 전에 정상작동하던 테스트 코드가 시큐리티 적용 후 @WebMvcTest 애너테이션을 사용한 컨트롤러 테스트에서 회원 가입 테스트의 응답 상태가 의도한 201이 뜨지 않고 403이 뜨면서 테스트가 깨졌다. 해결 과정 - 이 경우 403 에러가 발생하는 이유는 대부분 CSRF 토큰에 대한 문제라고 한다. - CSRF(Cross-Site-Request Forgery)란 악의적인 코드를 심어놓은 사이트에서 로그인한 사용자가 클릭하게 하여 사용자의 의지와 무관한 요청을 발생시키는 공격을 의미한다. - Spring Security에서는 이를 방지하기 위해 "CSRF Token"을 이용해 토큰을 비교한 뒤 일치하는 경우에만 메서드를 정상적으로 실행하게 만든다. - RESTfu..