분류 전체보기 954

slot

qwevdasdf 얘를 들어 다른 컴포넌트에서 저 MyBtnComponent에 저렇게 줬다면 MyBtnComponent에서 저 안에 있는 값을 하면 가져올 수 있음. 참고로, 태그도 들어감 asdf 태그 다 적용 됨. 참고로, 만약 MyBtnComponent에서 h1에 대한 스타일을 지정했는데, style 범위를 scope로 했으면 h1 스타일 적용 안됨. 저 h1은 저렇게 h1 넣어준 컴포넌트에서 스타일 줘야 함. 아니면 글로벌 스타일을 찾겠지. h1은 저거 넣어준 컴포넌트 꺼라고 생각하면 됨. 또, 저렇게 뿐만 아니라 slot 여러 개 줄 수 있음. {B} Banana 저렇게 template로 묶은다음에 v-slot:슬롯이름 하면 됨. 쓸 때는 MyBtnComponent에서 연결 됨. 이러면 이제 바..

Vue.js 2023.10.13

:class

:class="변수" 하면 받을 수 있다. 그게 class가 된다. 그리고, data(){ on:false } 이런 식으로 있을 때, :class="on" 했을 때, 저게 true면 class에 on이 들어가는 거다. 그래서 다른 컴포넌트에서 저 컴포넌트한테 :on = "isOn" 등 해서 true false 등을 동적으로 할당할 수 있다. (물론 같은 컴포넌트에서 on 바꿀 수도 있음) 만약 스타일에 변화를 주고 싶다면 원래 하던 것 처럼 btn.on {} 이런 식으로 on 됐을 시 스타일을 주면 된다. 참고로, 외부에서 class="appClass" 이렇게 부여할 수도 있는데, 이러면 저 컴포넌트의 클래스에 추가하는 거임.

Vue.js 2023.10.13

37. 트레이드 오프, SpringDataJPA 사용에 따른 구조변화

우리가 과거 SpringDataJPA를 썼을 때의 구조를 보자. 뭔가 우리가 의도했던 repository가 SpringDataJpaRepository와 어댑터 역할을 하는 꼴이 되었다. 그리고, 한눈에 보기에도 좀 복잡해 보인다. 뭐 이렇게 보면 낫긴하다. 여튼간에, 유지보수에도 비용이 든다. 예를 들어 서비스가 추상화에 의존하지 않고 바로 저 SpringDataRepository구현체를 의존한다고 생각해보자. 이게, 우리가 객체지향 SOLID 하면서 추상화에 의존하는게 좋다고 하긴 했지만, 어떤 게 나은지 진짜 곰곰히 생각해 봐야 한다. 만약 위처럼 우리가 의도한 리포지토리가 SpringDataJpaItemRepository의 어댑터 역할을 한다고 했을 때, 유지보수할 때 Service에서는 뭘 의존하..

36. Querydsl 적용

자, Querydsl을 설정하면 QItem 이라는 클래스가 자동으로 만들어 졌을 것이다. 이제 그냥 그거 쓰면 된다. 이제 쿼리는 JPA, 즉 EntityManager를 통해 간단하게 사용. Querydsl, 조건, 즉 쿼리를 동적으로 변경해야 할 경우 마치 블록 넣듯이 쿼리를 동적으로 변경하여 사용하고 싶을 떄 사용. JdbcTemplate, 위의 저런 것 보다 그냥 쿼리 한번으로 짜는 게 훨씬 깔끔할 경우, 혹은 JPA나 Querydsl로 해결하지 못한 경우 이렇게 3가지 경우로 쓴다. 주는 JPA, Querydsl을 쓰다가, (이 중에서도 주는 JPA이고 동적으로 쿼리를 만들어야 할 경우에 Querydsl) 가끔 쿼리를 직접 작성해야 할 경우 Jdbc템플릿을 쓰는 느낌이다. 일단은, 자동으로 생성된..

35. Querydsl 설정

build.gradle에 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" 이렇게 넣어 주고 plugins 부분에 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" 이거 넣어주면 gradle 창에 querydsl 관련 명령어들을 추가 시킨다. 여튼 이게, 뭐 스프링 ..

34. Querydsl 등장

D : 도메인 S : 특화 L : 언어 쿼리를 특정 도메인에 특화 시킨 제한적인 표현력을 가진 프로그래밍 언어 간결, 단순, 유창 쿼리에 특화된 간결한 언어이며, 다양한 DB의 쿼리를 통합해 지원해 주는 API. 처음 시작은, 쿼리도 사실 DB에 따라 다양함. 근데 이런 쿼리를 추상화해서 통합시켜 보자. 에서 출발. (실제로 여러 DB에서 Querydsl을 쓸 수 있음) 그럼 뭐 인터페이스에, 표준화 시키고 각 DB의 쿼리에 따라 구현해 놨겠지. 쿼리를 자바코드로 쓸 수 있게. 여러 DB의 query를 type-safe하게 쿼리로 만들어 줄 수 있음.(자바코드로 만들어 줄 수 있음. 오류 있으면 뱉으면서.) 잘은 모르겠는데, type safe한 쿼리를 작성하려면 코드가 좀 필요하다고 한다. JPA같은 경..

33. Querydsl

자, 이제 동적 쿼리 문제를 해결해 줄 기술 Querydsl이다. 만약 sql이 클래스처럼 타입이 있고 자바코드로 작성할 수 있다면? 막 내가 u만 쳐도 알아서 username이 emmet 기능으로 나오고 그런다면? 그리고 타입구분이 되어서 컴파일 오류도 발생시켜 준다면? (이런 걸 type-safe 라고 함) Querydsl은 쿼리를 자바로 type-safe하게 개발할 수 있게 지원해주는 프레임 워크. 주로 JPQL에 사용. sql 문법의 오류를 잡아준다..! sql도 지원하긴 하는데, 그건 복잡해서 잘 안쓰고, 주로 JPQL에서 사용. 예를 들어, DB에서 다음과 같은 조건의 사람들을 가져오라고 할 때. 나이 : 20~40살 성 : 김씨 순서 : 나이 많은 순 3명만. @Entity public cl..