전체 글

꾸준히 성장하는 개발자 WONOW 입니다. 🤗
· TIL
@Override public void deleteTagMappingByCardId(Long cardId) { queryFactory .delete(cardHashTag) .where(cardHashTag.card.id.eq(cardId)) .execute(); } 어제 만들어놨던 코드인데, 위 부분에 문제가 있다는 것을 알 수 있다. 벌크 연산인데, EntityManager flush(), clear() 을 하지 않는다는 점이다. flush및 clear를 추가하지 않은 이유는 밑에와 같다. 위의 이유에서 추가적인 이유가 있었다. 나는 편의를 위해 JpaConfig 라는 클래스를 만들어서 JPAQueryFactory를 빈으로 만들고 주입받고 있었다. @RequiredArgsConstructor @Enab..
· TIL
개요 기존에 작업했던 ToDo API 에서 동적 쿼리 기능을 써보고자 해시태그 기능을 만들고 해시태그 기준으로 동적 쿼리로 검색하는 기능을 추가하려고 했다. 기존 ERD 수정 된 ERD @Override public CardResponseDto createTodoCard(CardPostRequestDto cardPostRequestDto, User user) { String title = cardPostRequestDto.getTitle(); String content = cardPostRequestDto.getContent(); // 만약 글 내용이 // 오늘 할 일 1. 2. 3. // #화이팅 #아아 #으으으으 뒤에 이런 글이 더 있다면 // hashTags[0] = 오늘 할 일 1. 2. 3. /..
· TIL
기존 코드 @SpringBootApplication(exclude = SecurityAutoConfiguration.class) public class TodoAppApplication { public static void main(String[] args) { SpringApplication.run(TodoAppApplication.class, args); } @Bean JPAQueryFactory jpaQueryFactory(EntityManager em) { return new JPAQueryFactory(em); } } 이게 기존 코드다 근데 Gradle Build 를 하면 WebMvcTest 하는 부분에서 계속 오류가 발생한다. @WebMvcTest를 쓰면 Mvc관련 빈들'만' 전부 주입 받는데..
· TIL
QueryDSL을 쓰며 궁금했던 점이 왜 굳이 Qclass를 쓰는 거지? 궁금했었다. 타입 안정성 등의 여러 이유로 Qclass를 쓴다는데... Entity는 이걸 못하는 건가? 궁금해졌다. 그래서 열심히 살펴보며 흐름 파악하는 글... 자세한 글이 아님... Qclass @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age;..
· TIL
QueryDSL QueryDSL은 JPAQueryFactory가 필요하다 JPAQueryFactory는 생성자로 EntityManager가 필요하다 public class QueryDsl { @Autowired EntityManager entityManager; JPAQueryFactory jpaQueryFactory; public void method() { jpaQueryFactory = new JpaQueryFactory(entityManager); } } 이런 식으로 받아주면 된다. JpaQueryFactory 기본 문법은 SQL 문법이랑 매우 비슷하다. 기본 문법 select() SQL의 SELECT다 SELECT * FROM users # 여기서 SELECT. 매개 변수로 컬럼을 넣어주면 된다..
· TIL
오늘은 동적 쿼리랑 정적 쿼리가 뭔지 배웠다 정적 쿼리 정적 쿼리란 검색했을 때 바뀌지 않는 쿼리다 바뀌지 않는 쿼리...? 검색값이 바뀌지 않는 쿼리라고 생각하면 된다. 만약 ORDERS라는 테이블에 가격 컬럼과 주문번호 컬럼이 있다고 가정하고 1번 주문 5000원 2번 주문 8000원 3번 주문 10000원 이라고 가정하면 SELECT * FROM ORDERS -> order_id price 1 5000 2 8000 3 10000 이런 식으로 안에 들어 있는 값에 따라 딱 정해져서 나온다 쿼리의 구조가 항상 동일 하다. 즉 구조가 변경되지 않는다 동적 쿼리 동적 쿼리란 어떤 인자에 의해서 쿼리의 결과가 바뀔 수 있는 쿼리다 만약에 가격이 8000원 이하인 주문만 출력하고 싶다 하면 SELECT * F..
wonow_
wonow_