개발공부(173)
-
[ORM 표준 JPA] 15장 고급주제와 프록시, 성능개선
예외 처리 JPA를 사용할 때 발생하는 다양한 예외와 예외에 따른 주의점 트랜잭션 롤백 시 주의사항* Spring 프레임워크 처리: OSIV처럼 영속성 컨텍스트 범위를 트랜잭션보다 크게 사용할 때 문제가 발생한 트랜잭션을 롤백하더라도 다른 트랜잭션에서 영속성 컨텍스트를 사용할 가능성이 있습니다. 하지만 이럴 경우 롤백이 영속성 컨텍스트를 포함하도록 범위를 지정해주기 때문에 예방해줍니다. 엔티티 비교 엔티티를 비교할 때 주의점과 해결 방법을 설명 애플리케이션 수준의 반복 가능한 읽기* 엔티티 조회 시 항상 같은 엔티티 인스턴스 반환(동등성;equals 비교 수준이 아닌 정말 주소값이 같은 동일성 인스턴스를 반환합니다.)Member member1 = em.find(Member.class, "1L"); Mem..
2021.09.05 -
[Builder] 생성자 어노테이션
Builder와 생성자 1) @Builder란? @Builder Lombok 문서를 보면 명시적 생성자가 없을 경우에 @AllArgsConstructor를 package-private 타입으로 자동생성 한다고 나와있습니다. 그래서 명시적 생성자가 있지만 @AllArgsConstructor가 없다면 @Builder에 의해 에러가 발생될 것입니다. 따라서 @NoArgsConstructor와 같은 명시적 생성자 어노테이션을 붙일 땐 반드시 @AllArgsConstructor도 함께 명시해줘야 합니다. 2) @AllArgsConstructor란? Lombok 문서를 보면 @AllArgsConstructor generates a constructor with 1 parameter for each field in ..
2021.09.05 -
[Java] Java Stream(스트림)
Java Stream(스트림) 참고영상: Java 8 Streams Tutorial 1) Stream? 스트림은 Collections, Lists, Sets, ints, longs, doubles, arrays, files 등에서 사용이 가능합니다. 스트림 기능은 중개자(intermediate)나 종결자(terminal)로 나뉩니다. 2) 중개자 Stream 스트림 중개자 연산은 복수 사용이 가능합니다. 데이터가 클 경우 필요한 데이터로만 가공해줄 수 있습니다. 주로 쓰는 연산은 filter(), map(), sorted(), findFirst()가 있습니다. 3) 종결자 Stream 스트림 종결자 연산은 단일 사용만 가능합니다. 예를 들어 반복해서 값을 리턴해주는 forEach처럼요. collect는 ..
2021.09.03 -
[junit] junit 테스트 때 주의사항(나만 그런가요?)
junit 테스트 때 주의사항(나만 그런가요?) 회사에서 websocket 방식으로 redis에 데이터를 업데이트 해주는 서버와 본 서비스 서버 두 가지를 맡아 개발하다보니 트랜잭션을 지원하지 않는 redis repository와 RDBMS MariaDB 간의 테스트 방식에 따른 혼란(aka 삽질)이 발생했습니다. (경험치 +30, 시간 -30) 나쁘지 않은 것일수도... 사담은 이만하고 RDBMS + @DataJpaTest + Springboot + build 환경별 profile이 다른 프로젝트에서 junit 단위 테스트할 때 주의사항에 대해 알아보겠습니다. 1) @ActiveProfile production, stage, local 등 build 환경설정이 다를 경우 application.yaml ..
2021.09.03 -
[SpringBoot] spring boot application.properties/yaml profile 설정
spring boot application.properties/yaml profile 설정 1) Externalized Configuration(application.properties/yaml) spring boot는 설정들을 편리하게 주입할 수 있게 application.properties / yaml을 이용한 외부 설정(Externalized configuration)이 가능합니다. SpringApplication은 properties를 다음 경로에 위치한 application.properties로부터 읽어들여 스프링 환경설정에 추가합니다. 현재 디렉토리의 /config 서브 디렉토리 현재 디렉토리 /config 패키지의 classpath classpath root (위에서 밑으로 설정이 적용되는 ..
2021.09.03 -
[넥스트스텝] 반복문 내 객체생성은 성능을 저하시킬까?
반복문 내 객체생성은 성능을 저하시킬까? 리뷰어 분이 반복문 내에서 객체가 초기화 되는 부분을 리펙토링 해보라고 피드백 주셨습니다. 다른 부분을 리펙토링 할때도 객체 초기화는 반복문 내에서 하면 안된다는 제약이 생겨 불편해지기 시작했습니다. 예를 들어 Car Names를 List로 받아서 Car 객체를 createCar을 이용해 초기화 해줘야 할 때 반복문 안에 객체 초기화도 같이 들어가야 합니다. public static Cars createCars(String[] carNames, List cars) { for (String carName : carNames) { cars.add(Car.createCar(carName, new ArrayList())); return new Cars(cars); } 그..
2021.09.02