개발/JAVA 4

[java] 어댑터 패턴 (Adapter Pattern)

어댑터 패턴이란? 호환되지 않는 인터페이스들을 연결하는 디자인 패턴 기존의 클래스를 수정하지 않고도 특정 인터페이스를 필요로 하는 코드에서 사용할 수 있다. 또한 클래스의 인터페이스를 다른 인터페이스로 변활할 수도있어서 다른 인터페이스를 가진 클래스들이 상호작용할 수 있다. java 라이브러리에서 사용 예 InputStreamReader : 바이트 스트림을 문자 스트림으로 변환. Spring Framework에서 사용 예 HandlerAdapter 인터페이스 어댑터패턴 구현방법 1. 패턴을 적용하고자 하는 인터페이스 식별하기 2.어댑터 클래스 작성 3.클라이언트 코드에서 호출 어댑터패턴 장단점 1. 장점 어댑터 패턴을 이용하면 기존의 클래스를 수정하지 않고도 클라이언트에서 새로운 인터페이스 사용가능. 코..

개발/JAVA 2023.11.17

[Java] List를 map(배열같은key/value) 로 만들기

결론 Collectors.toMap 를 사용하자 과정 List shops 로 매장리스트를 가져오고 Key = shop_id Value = Shop shop 이렇게 map을 만들어서 key 로 해당 객체를 이용할 수 있는 방법이 필요했다. @Transactional public void setDefaultSyncEnabledBulk(List shopProductDtos) { Map shopMap = shopService.getAllShop() .stream() .collect(Collectors.toMap(shop -> shop.getId(), shop -> shop)); // bulk insert List shopProducts = shopProductDtos.stream() .map(shopProduc..

개발/JAVA 2023.08.30

[Java] Spring JPA findOne 과 findTop1 의 차이

결론 where 의 컬럼이 PK 또는 unique 한 값 (id, goodsId, no 등 값이 하나) 일 때 findOne 을 써도된다. 여러개 나와도 상위 1개 limit 1 을 얻고 싶은 경우에는 findTop1 을 써야 한다. 과정 내가 원하는 값은 상품번호로 조회하고 order by goodsId desc 로 정렬하여 상위 1개의 데이터를 뽑고싶었다. 1. findOne을 사용할 경우 돌아가는 쿼리 Repository.findOneByOrderByGoodsIdDesc(); select * from stock.shop_product order by goods_no desc ; 쿼리문을 컴파일해본 결과 limit 조건절이 생기지 않았다. 2. findTop1 을 사용할 경우 돌아가는 쿼리 Repos..

개발/JAVA 2023.08.30