728x90

java 98

롬복(lombok) .. 그 기능에 관해서

Maven 설정 추가 org.projectlombok lombok 1.18.16 provided 플러그인 설치(intellij 기준, 설정 → 플러그인 → lombok 검색) 롬복에서 자주 쓰는 것들 @Getter @Setter -> 각각 getter, setter 추가 @Data -> 한번에 getter, setter 추가 @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 생성 @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성 @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor ..

JAVA 2022.03.31

(Java) 로그관리! Logger 사용 이유 및 설정 방법

개발자라면 꼭 필요한 Logger를 통한 로그관리 방법과 사용하는 이유 및 설정방법을 알아보자 ! 먼저 사용방법은 간단하다. 로깅 라이브러리는 @slf4j 을 사용하여 내가 로그를 남길 컨트롤러 클래스에 선언을 해주고 메소드 내에서 사용하면 된다. @slf4j public class MainController(){ private final Logger LOGGER = LoggerFactory.getLogger(MainController.class.getName()); public void moveMainPage(){ LOGGER.info("Hello world!"); } } 그럼 다음과 같이 콘솔창에 찍힐 것이다(자세한 정보가 함께 출력!!) (참고로 로그 레벨은 TRACE > DEBUG > INFO >..

JAVA 2022.03.27

(JPA) Error attempting to apply AttributeConverter 에러 관련 글(feat. @Converter 사용시)

컬럼에서 DB에 데이터를 변환하는 @Converter 어노테이션을 쓰다가 아래와 같은 에러와 마주치게 되었다. JpaSystemException: Error attempting to apply AttributeConverter 이를 해결하기 위해 Converter를 구현하는 인터페이스를 살펴보기로 했다. JpaAttributeConverter 인터페이스와 구현체 JpaAttributeConverterImpl 는 JpaAttributeConverter 인터페이스의 표준 구현체이다. attributeConverterBean 이라는 멤버변수에 AttributeConverter인터페이스를 구현한 커스텀 컨버터들을 가지고 있다가 경우에 따라서 관계형 값을 도메인 값으로, 도메인 값을 관계형 값으로 변환을 해준다...

JPA 2022.03.26

[디자인 패턴]Builder pattern 이란?

빌더 패턴(Builder pattern) Builder 패턴은 인스턴스를 생성할 때 생성자(Constructor)만을 통해서 생성하는데는 어려움이 있어서 고안된 패턴이다. 클래스에 생성자 인자가 많다면 Builder 패턴을 사용하면 좋다. 왜냐하면 생성자 인자가 너무 많다면 어떠한 인자가 어떠한 값을 나타내는지 알기 어렵기 때문이다. 코드를 보면서 이해해보자. public class User { private int userIdx; // 선택 private String name; // 필수 private String part; // 필수 private int age; // 선택 private String email; // 선택 } 위와 같은 User 클래스에서 필수적으로 받아야 하는 정보, 선택적으로 받..

JAVA 2022.03.22

(Spring DI) Appconfig를 활용한 가격정책을 DI로 구현

DI(의존성 주입)를 활용한 할인정책 구현(Java) 할인 정책을 구현하기 위해 DiscountPolicy 인터페이스 밑에 정액할인 정책 구현체와 정률할인 정책 구현체를 두었다. - 할인 정책 인터페이스(DiscountPolicy.java) import hello.core.member.Member; public interface DiscountPolicy { /** * @return 할인 대상 금액 */ int discount(Member member, int price); } - 정액 할인 정책 구현체(FixDisCountPolicy.java) public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount ..

Spring 2022.02.15

(스프링 데이터 JPA) 페이징과 정렬

스프링 데이터 JPA 페이징과 정렬 페이징과 정렬 파라미터 org.springframework.data.domain.Sort : 정렬 기능 org.springframework.data.domain.Pageable : 페이징 기능 (내부에 Sort 포함) 특별한 반환 타입 org.springframework.data.domain.Page : 추가 count 쿼리 결과를 포함하는 페이징 org.springframework.data.domain.Slice : 추가 count 쿼리 없이 다음 페이지만 확인 가능합니다(내부적으로 limit + 1조회함). Page 사용 예제 코드 검색 조건: 나이가 20살 정렬 조건: 이름으로 오름차순 페이징 조건: 첫 번째 페이지, 페이지당 보여줄 데이터는 3건 Page 사용 ..

JPA 2022.02.15

(Spring data JPA) 쿼리 메소드란?

스프링 데이터 JPA의 예 스프링 데이터 JPA는 메소드 이름을 분석해서 JPQL을 생성하고 실행(코드량이 줄어들어 효율성 증가) public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username, int age); } 위와 같이, 메소드 이름으로 쿼리를 생성하는 기능을 쿼리 메소드라고 하며 기능은 Spring 공식 홈페이지에 정리되어 있으며 간단히 정리하면 아래와 같습니다. 스프링 공식문서 참고 - https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ 조회: find…By ,read…By ,query…By..

JPA 2022.02.15

QueryDSL 소개

QueryDSL 소개 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크입니다. 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있습니다. IDE의 코드 자동 완성 기능 사용 가능 문법적으로 잘못된 쿼리를 허용하지 않음(오류 체크) 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음 등 의 특징을 가집니다. //member, order 테이블에서 OrderStatus의 상태와 MemberName의 이름에 따라 값을 조회 public List findAll(OrderSearch orderSearch) { QOrder order = QOrder.order; QMember member = ..

JPA 2022.02.15
728x90