분류 전체보기
-
-
JPA Entity 상태 종류카테고리 없음 2023. 2. 19. 23:19
트랜지언트 : Transient JPA 와 전혀 상관없는 상태. 그냥 자바 객체 퍼시스턴트 : Persistent JPA 가 관리 중인 상태. 1차 캐시, Dirty checking, Write behind 디태치드 : Detached JPA 가 관리 하다가 그만둔 상태. Transient 와 같이 JPA 와 관련 없어짐. 리무브드 : Removed JPA 가 관리 중인 상태. 삭제 예정인 상태 JPA 를 사용할 때에는 엔티티 객체가 Persistent 상태인지 명확하게 알아야 합니다. new 로 생성한 엔티티 객체를 save 했거나, repository 에서 find 했다면 Persistent 상태입니다. 동일 Transaction 내에서는 Persistent 상태가 유지됩니다. 하지만 Transact..
-
spring jpa 쿼리를 로그로 보고 싶어요.카테고리 없음 2023. 2. 19. 20:32
application.properties 에 아래 설정을 추가하세요. spring.jpa.show-sql=true 로그에 쿼리가 한줄로만 나와서 보기가 어려워요. 그러면 또 application.propertis 에 추가하세요. spring.jpa.propertis.hibernate.format_sql=ture 쿼리 value 도 보고 싶어요. 그러면 hibernate log 를 찍어야 해요. application.properties 에 추가하세요. logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE sql 쿼리 로그 완전 보기 끝
-
spring data jpa 사용 시에 group by 는 어떻게 사용하면 편할까카테고리 없음 2023. 2. 19. 18:08
쿼리 dsl을 이용해서 쉽게 group by 를 할 수는 있는데 repository 리턴타입을 어떻게 세팅하면 될까? @Query("select s from Sampe s group by s.companyId") List findByCompanyGroupBy(); 별론가? 리턴타입은 List 가 된다. 어플리케이션에서 group by 해 보자 list.stream() .collect(Collectors.groupingBy(Sample::companyId)) 쉽네. companyId 별로 그룹핑해서 처리하는 비지니스를 계속해 보자. list.stream() .collect(Collectors.groupingBy(Sample::companyId)) .entrySet().stream() .map(...Entr..
-
@SpringBootTest 에서 RestTemplate 으로 localhost 를 호출할 때카테고리 없음 2023. 2. 19. 15:14
SpringBoot Application에서 원격 API의 샘플 API를 만들고 Test 로 비지니스 테스트를 하려고 합니다. 하지만 Connection refuse. 에러가 발생합니다. 아래는 에러가 나는 샘플 코드 입니다. @SpringBootTest public class TmpTest { @Autowired RestTemplate restTemplate; @Test void call() { String res = restTemplate.getForObject("http://localhost:8080/test", String.class); Assertions.assertNotNull(res); } } 해결 방법은 여러가지가 있겠지만 가장 간단한 방법은 아래와 같습니다. @SpringBootTest(..
-
Docker, postgres, adminer 이용해서 테스트 디비 구성하기카테고리 없음 2023. 2. 19. 00:26
로컬에서 테스트 시에 사용하기 좋은 디비 환경 구성을 도커를 이용해서 해 보겠어요. 도커는 설치되어 있다고 가정합니다. 아래 코드를 복사해서 docker-compose.yaml 로 파일을 만들어요. version: '3.1' services: db: image: postgres restart: always container_name: postgres # 컨테이너 이름 설정 environment: POSTGRES_USER: user POSTGRES_PASSWORD: pass POSTGRES_DB: todos ports: - 5432:5432 # 외부 노출 포트 adminer: image: adminer restart: always container_name: postgres-adminer # 컨테이너 이름..