IntelliJ에서 Github 리포지토리 생성
1. Command + Shift + A를 눌러서 Github 연결 2. Github Login 후 Repository 이름 지정
- IDE/Intellij
- · 2023. 7. 28.
Dirty Check( = 상태 변경 확인) JPA에서는 트렌잭션이 종료되는 시점에 모든 변경 사항을 반영시킨다. Entity를 조회한다면 조회된 시점에 스냅샷을 남겨두고 트랜잭션 종료 시점에 Entity에 변경 사항이 있다면 update 후 종료한다. 예시 코드 @RequiredArgsConstructor @Service public class PostsService { private final PostsRepository postsRepository; @Transactional public Long update(Long id, PostsUpdateRequestDto requestDto){ Posts posts = postsRepository.findById(id).orElseThrow(() -> ne..
Gradle 5.x 버전 이상부터는 Lombok dependency 추가 방식이 달라서 위와 같은 에러가 발생한다. 5.x 이전 버전 dependencies { implementation 'org.projectlombok:lombok' } 5.x 이후 버전 dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' }
테스트 코드 작성 후 실행을 했을 때 아래와 같은 에러가 발생했다. 찾아보니 build 설정을 gradle에서 intellJ로 바꿔주어야한다. gradle과 intelliJ 둘 다 같은 빌드 툴을 사용하지만 빌드 방식이 다르다고 한다. intelliJ는 증분 빌드 방식을 사용해서 변경된 사항만 빌드를 하기 때문에 빌드 속도가 더 빠르다. 하지만 삭제된 파일에 대해서 반영이 되지않아 삭제된 파일을 포함하여 빌드하는 문제가 생길 수 있다.
1. Command + Shift + A를 눌러서 Github 연결 2. Github Login 후 Repository 이름 지정
ORM (Object Relational Mapping) 객체가 테이블이 되도록 매핑시켜주어 자바 객체와 쿼리를 분리할 수 있으며 트랜잭션 처리나 기타 DB 관련 작업들을 간편하게 처리할 수 있게해주는 기술 JPA (Java Persistance API) Java의 ORM 기술에 대한 API 표준 명세이며, JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이다. 즉, 사용하기 위해서는 구현체가 있어야한다. 장점 단점 데이터를 객체 지향적으로 관리할 수 있기 때문에 개발자가 비즈니스 로직에만 집중할 수 있다. 학습 비용이 높다 SQL을 직접 작성하지 않아도 되며, 테이블 변경 시 Entity만 수정하면 된다. 복잡한 쿼리가 필요한 경우 불편할 수 있다. DB에 대한 코드 종속성이 낮아 DB가 변경되더..
에러 발생 JPA에서 JPQL을 통해 쿼리를 날렸을 때 ConverterNotFoundException이 발생 원인 분석 에러메세지: 응답값을 변환할 때 변환하는 컨버터를 찾을 수 없다. 구글링해본 결과 @Query를 사용해서 반환 받은 값을 DTO 클래스에 저장할 경우에 발생한다. 보통 Getter가 없거나 타입이 맞지않을 때 발생할 수 있다. 나의 경우에는 위 2가지 경우에 해당이 되지않아 다른 경우를 찾아본 결과 JPA에서 GROUP BY를 통해 결과를 받아오면 Object 타입으로 반환된다고 한다. 해결 1. 반환 타입을 Object 타입으로 바꾸고, 서비스 클래스에서 Object 타입을 DTO 클래스로 변환 2. DTO 인터페이스를 생성해서 인터페이스에 해당 필드의 getter 선언해서 사용