728x90

Error

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

내저장소 바로가기 luxury515

728x90

-Dspring.profiles.active=local

내저장소 바로가기 luxury515

728x90

뭐 제목은 거창하지만 내용은 별거 없을것 같다. 어로그 끌어서 미안하지만 …

일단 설명을 하자면 NPE를 방지하기 위한 노력은 예전부터 많은 JAVA 개발자들이 세세대대 이어져왔다.

아직도 개발도중에 NPE 은 우리를 항상 괴롭히기도 한다.

뭐 아시다싶이 apache Commons Utils 를 이용하여 String , Object 에 대한 null 체크를 대부분은 하고 있다. 하지만 오늘 얘기할 부분은 Optional 클래스에 위임하는 방식이니 이해하고 그냥 읽어만 달라.

가끈 팀프로젝트에서 해당 클래스를 이용해서 null 체크하라는 지시가 있을때 하려고하면 항상 까먹곤 하니 오늘 좀 자주쓰는 부분을 적어보자.

public OrderDto getOrderDto(Long orderId) {
    QOrder order = QOrder.order;
    QUser user = QUser.user;
    QItem item = QItem.item;

    OrderDto orderDto = queryFactory
        .select(Projections.constructor(OrderDto.class, order, user))
        .from(order)
        .leftJoin(order.user, user)
        .where(order.id.eq(orderId))
        .fetchOne();

    if (orderDto == null) {
        throw new NotFoundException("Order not found");
    }

    List<OrderItemDto> orderItemDtos = queryFactory
        .select(Projections.constructor(OrderItemDto.class, item))
        .from(orderItem)
        .join(orderItem.item, item)
        .where(orderItem.order.id.eq(orderId))
        .fetch();

    orderDto.setOrderItemDtos(orderItemDtos);

    return orderDto;
}

아래와 같이 개선 해보았다.

public OrderDto getOrderDto(Long orderId) {
    QOrder order = QOrder.order;
    QUser user = QUser.user;
    QItem item = QItem.item;

    OrderDto orderDto = queryFactory
        .select(Projections.constructor(OrderDto.class, order, user))
        .from(order)
        .leftJoin(order.user, user)
        .where(order.id.eq(orderId))
        .fetchOneOptional()
        .orElseThrow(() -> new NotFoundException("Order not found"));

    List<OrderItemDto> orderItemDtos = queryFactory
        .select(Projections.constructor(OrderItemDto.class, item))
        .from(orderItem)
        .join(orderItem.item, item)
        .where(orderItem.order.id.eq(orderId))
        .fetch();

    orderDto.setOrderItemDtos(orderItemDtos);

    return orderDto;
}

내저장소 바로가기 luxury515

'Back-end > 기타' 카테고리의 다른 글

gradle bootrun 작동 에러  (0) 2023.04.14
radius(레이디스)서버  (0) 2023.04.14
tomcat m1 설정  (0) 2023.04.13
IPv6 와 IPv4 를 비교했을때 장점은 뭐지?  (0) 2023.04.13
equals()와 hashCode() 에 대한 고찰  (0) 2023.04.13
728x90

새로운 저장소 생성

echo "# mybatis-demo" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M 'master'
git remote add origin git@github.com:luxury515/mybatis-demo.git
git push -u origin 'master'

로컬저장소 —> 원격저장소에 push

git remote add origin git@github.com:luxury515/mybatis-demo.git
git branch -M 'master'
git push -u origin 'master'


내저장소 바로가기 luxury515

'Dev-Tools > git' 카테고리의 다른 글

git install  (0) 2023.04.14
ssh key 쌍 생성  (0) 2023.04.14
git 현재 로컬프로젝트 원격저장소 push  (0) 2023.04.14
sourceTree  (0) 2023.04.13
SSL Key Update 로 인한 git pull 실패시!  (0) 2023.04.13

+ Recent posts