본문 바로가기

Spring14

[FetchType.Lazy로 인한 Json 오류] Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException 1. 오류 FetchType.Lazy로 인한 Json 오류 There was an unexpected error (type=Internal Server Error, status=500). Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties disco.. 2022. 1. 14.
@CreationTimestamp 시간 오류 1. 오류 Spring Data JPA 사용하면서, MySQL에 @CreationTimestamp 사용하여 insert한 시간을 저장할 때, DB에 현재시간과 다른 시간 삽입 EX) 현재 시간 : 2021-10-05 오후 05:21:00 → DB 저장 시간 : 2021-10-05 오전 06:54:00 2. 해결방법 application.properties의 datasource.url serverTimezone=UTC → ?serverTimezone=Asia/Seoul 변경 # 변경 전 spring.datasource.url=jdbc:mysql://localhost:3306/ticket?serverTimezone=UTC&characterEncoding=UTF-8 # 변경 후 spring.datasource.. 2021. 10. 5.
[스프링기본] CH03. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 새로운 할인 정책 - 고정 금액 아닌 주문한 금액의 %를 할인해주는 정률 할인으로 변경 RateDiscountPolicy # 정률 할인 코드 추가 public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return price * discountPercent / 100; } else { return 0; } } } # 정률 할인 테스트 @Test @DisplayName("VIP가 아니면 할인이 적용되지 .. 2021. 8. 31.
[스프링기본] CH02. 스프링 핵심 원리 이해1 - 예제 만들기 1. 비즈니스 요구사항과 설계 회원 - 회원은 가입하고 조회 가능 - 회원은 일반과 VIP 두 가지 등급 존재 - 회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있음 (미확정) 주문과 할인 정책 - 회원은 상품을 주문 - 회원 등급에 따라 할인 정책 적용 - 할인 정책은 모든 VIP는 1000원 할인해주는 고정 금액 할인 적용 (나중에 변경 가능) - 할인 정책은 변경 가능성 높음, 기본 할인 정책을 아직 정하지 못했고 할인을 적용하지 않을 수도 있음 (미확정) 회원 데이터, 할인 정책 변동성 높음 ⇒ 인터페이스 만들고 구현체로 바꿀 수 있게 설계 2. 회원 도메인 설계 회원 도메인 요구사항 - 회원은 가입하고 조회 가능 - 회원은 일반과 VIP 두 가지 등급 존재 - 회원 데.. 2021. 8. 18.
[스프링기본] CH01. 객체지향설계와 스프링 1. 스프링이란? 1.1 스프링의 핵심 ⇒ 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 1.2 스프링 프레임워크 핵심 기술, 웹 기술, 데이터 접근 기술, 기술 통합, 테스트, 언어 등의 다양한 기술 지원 1.3. 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원 단독 실행 가능한 스프링 애플리케이션 쉽게 생성 별도의 웹 서버 설치 X 손쉬운 빌드 구성을 위한 starter 종속성 제공 스프링과 3rd parth(외부) 라이브러리 자동 구성 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 관례에 의한 관결한 설정 2. 좋은 객체 지향 프로그래밍 2.1 객체지향 특징 추상화 캡슐화 상속 다형성 2.2. 객체 지향 프로그래밍 컴퓨터 프로그램을 객체들의 모임으로 파악, .. 2021. 8. 16.
[스프링입문] CH07. AOP 1. AOP(Aspect Oriented Programming) 1.1 AOP가 필요한 상황 상황 - 모든 메소드의 호출 시간 측정 - 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core cocern) - 회원 가입 시간, 회원 조회 시간 측정 문제 - 시간을 측정하는 기능 → 공통 관심 사항 O, 핵심 관심사항 X - 시간 측정 로직과 핵심 비즈니스 로직 섞여 유지보수 어려움 - 시간 측정 로직을 별도의 공통 로직으로 만들기 어려움 - 시간 측정 로직 변경 시, 모든 로직 찾아가 변경해야 함 # MemberService @Transactional public class MemberService { /** * 회원가입 */ public Long join(Member m.. 2021. 8. 13.