https://tecoble.techcourse.co.kr/post/2020-09-20-entity-lifecycle-2/ Entity Lifecycle을 고려해 코드를 작성하자 2편 이번 편에서는 전편에서 해결하지 못한 부분이었던 “Spring Boot에서는 기본적으로 OSIV의 설정 값이 true인데도 불구하고 LazyInitializationException… tecoble.techcourse.co.kr @Component @Configuration public class OpenEntityManagerConfig { @Bean public FilterRegistrationBean openEntityManagerInViewFilter() { FilterRegistrationBean filterFil..
세션 로그인 방식을 구현하고, OAuth 방식으로 Google 로그인을 구현 시작했다. login.html html -> "/oauth2/authorization/google" OAuth Client 라이브러리에서 정해놓은 주소이기 때문에 주소를 지정해야함. 구글 로그인이 완료된 뒤의 후처리가 필요함. 1. 코드받기(인증) 2. 엑세스 토큰(권한) -> 코드가 아님, (엑세스 토큰 + 사용자 프로필 정보) 3. 사용자 정보 가져오기 4. 회원가입 자동 진행 / 추가적인 정보가 필요할 경우, 회원가입 창 WebSecurityConfig 의 SecurityFilterChain .oauth2Login() .loginPage("/user/login") .userInfoEndpoint() .userService(..
회원가입 구현 1. Controller에 PostMapping 설정 2. 회원가입 예외처리 설정 어떤 곳에서 발생한 오류인지 구분하기 위한 Enum ExceptionClass를 필드로 가지는 Constants 생성 public class Constants { public enum ExceptionClass { LOGIN_USERNAME("로그인 아이디"), LOGIN_PASSWORD("로그인 비밀번호"), SIGNUP_USERNAME("회원 가입 아이디"), SIGNUP_PASSWORD("로그인 패스워드"), SIGNUP_PASSWORDCHECK("로그인 패스워드 확인"); private String exceptionClass; ExceptionClass(String exceptionClass) { th..
파일시스템이란? 파일 시스템이란, 파일의 이름을 정하고 저장, 검색을 위해서 논리적으로 어디에 위치시켜야 하는지에 대한 방법을 구성한 시스템이다. 저장 매체의 공간이 증가 할수록 파일의 수 또한 점점 증가하게 되어 별도의 관리 시스템이 필요하게 되었다. 파일 시스템으로 인해 파일에 대한 접근이 효율적으로 수행되고 파일들이 서로 간섭하지 않도록 조정할 수 있게 되었다. 파일 시스템의 특징 계층적 디렉터리 구조를 가진다. 파일이나 폴더들을 효율적으로 관리 및 읽고 쓰게 한다. 파일 시스템의 역할 파일 관리 보조 저장소 관리 : 저장 공간 할당 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공 파일 시스템의 구조 메타 영역 : 데이터 ..
순환 참조를 방지하기 위한 방법은 여러 가지가 있다. 1. @JsonIgnore : 이 어노테이션을 붙이면 JSON 데이터에 해당 프로퍼티는 null로 들어가게 된다. 즉, 데이터에 아예 포함시키지 않는다. 2. @JsonManagedReference 와 @JsonBackReference : 부모 클래스(Posts entity)의 Comment 필드에 @JsonManagedReference를, 자식 클래스(Comment entity)의 Posts 필드에 @JsonBackReference를 추가해주면 순환 참조를 막을 수 있다. 3.@JsonIgnoreProperties : 부모 클래스(Posts entity)의 Comment 필드에 @JsonIgnoreProperties({"posts"}) 를 붙여주면 ..
객체의 양방향 관계 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야한다. 연관관계의 주인(Owner) 양방향 매핑 규칙 객체의 두 관계중 하나를 연관관계의 주인으로 지정 연관관계의 주인만이 외래키를 관리(등록, 수정) 주인이 아닌 쪽은 읽기만 가능 주인은 mappedBy 속성 사용하지 않음 주인이 아니면 mappedBy 속성으로 주인 지정 누구를 주인으로? 외래 키가 있는 곳을 주인으로 정해라. Entity의 관계를 모두 단방향으로 설정한 후 필요할 때만 양방향 관계를 설정한다. 심화과제 테스트 코드 분석 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironme..
💡 ORM: Object-Relational Mapping Object: **"객체"**지향 언어 (자바, 파이썬) Relational: "관계형" 데이터베이스 (H2, MySQL) https://jeong-pro.tistory.com/195 @ControllerAdvice, @ExceptionHandler를 이용한 예외처리 분리, 통합하기(Spring에서 예외 관리하는 방법, 실 예외 처리 과정 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다. 과하다할 만큼 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프 jeong-pro.tistory.com 스프링에서 예외처리는 크게 3가지로 나눌 수 있다. 컨트롤러단에서 처리 Controller Level -..
개발자 테스트 장점 빠르고 정확한 테스트 가능 (예상 동작 VS 실제 동작) 테스트 자동화 가능 배포 절차 시 테스트 코드가 수행되어 동작 검증 리팩토링 후 기존 동작에 대한 보증수표!!! 단점 개발 시간이 오래 걸림 테스트 코드를 유지보수하는 비용 JUnit 을 이용한 단위 테스트 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다. @PostMapping("/user/userinfo") @ResponseBody public UserInfoDto getUserInfo(@AuthenticationPrincipal UserDetailsImpl userDetails) { return new UserI..