CS 잡지식 썸네일형 리스트형 JS 기본(Feat.JS 코드는 <body>젤 밑에 적자) 이름: 지역: 서울 제주도 ## JS의 라이브러리들! HTML, JS 모두 웹 브라우저에서 실행되는 언어이다. 웹 브라우저는 위에서 아래로 마치 인터프리터처럼 한 줄 한 줄 파싱하여 실시간으로 렌더링을 한다. 근데 만약 이름: 지역: 서울 제주도 동네: 강남 서초 제주시 서귀포시 등록 테스트: 더보기 [사용자 정의 인터페이스] with Spring Data JPA 만드는 순서를 자꾸 까먹어서 정리를 해 놓겠다. 1. 만들고자 하는 메서드를 정의한 [인터페이스]를 새로 생성! //사용자 정의 인터페이스 with Spring Data JPA public interface MemberRepositoryCustom { // select condition에 따른 [동적] 쿼리 구현 List search(MemberSearchCondition condition); } 2. 인터페이스에서 정의한 메서드를 오버라이딩 -> 구현 클래스의 이름에 주의해야 한다. [원조 인터페이스 명] + [Impl]과 같이 앞에 MemberRepository 인터페이스 명을 붙여줘야 한다. @Repository public class MemberRepositoryImpl implements Mem.. 더보기 동적(dynamic) 쿼리 vs 정적(static) 쿼리 동적이냐 정적이냐의 기준은 SQL [문자열]이 변경되냐 안 되냐이다. EX) JPQL : SELECT m FROM Member m WHERE m.username = :username -> 파라미터 [:username]이 있어서, 동적 쿼리로 보이지만 이건 [정적] 쿼리이다. 왜냐하면, SQL문이 저기서 변하지 않기 때문! EX @Data // 검색 조건(selection condition) : 이 조건들을 가지고 동적 쿼리를 만든다. public class MemberSearchCondition { //회원명, 팀명, 나이(ageGoe,ageLoe) private String username; private String teamName; private Integer ageGoe; private Integ.. 더보기 연관 관계 세팅 TIP!!! @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter@Setter @ToString(of={"id","username","age"}) // 여기에다가 "team"을 넣으면, 무한루프 일어남!!!(모르겠으면, 게시물 참조) public class Member { // 연관 관계 필드들은 안 넣어야 한다. @Id@GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; p.. 더보기 샘플 데이터 입력의 2가지 방법 1] @PostConstruct 이용 or 프로필 사용 @Profile("local") // 아래 빈은 test에서는 동작하지 않고, 애플리케이션이 로딩될 때에만 동작한다. @Component @RequiredArgsConstructor public class InitMember { private final InitMemberService initMemberService; @PostConstruct public void init(){ initMemberService.init(); } //Q. 아래에서 클래스를 선언하지 말고, @PostConstruct 메서드 안에 샘플 데이터를 입력하면 되는 것이 아닌가? //A. 정확한 설명은 해주지 않았지만, @PostConstruct와 @Transactional의 .. 더보기 Querydsl 사용 시, 주의해야 할 버그(newInstance, ExpressException..) @Test // [Property 접근법] : getter를 사용하여 property에 접근하고, setter를 이용하여 값을 삽입 void findDtoBySetter(){ List results = queryFactory .select(Projections.bean(MemberDto.class, member.username, member.age)) .from(member) .fetch(); for (MemberDto result : results) { System.out.println("result = " + result); } @Data public class MemberDto { private String username; private int age; public MemberDto(String .. 더보기 use_sql_comments: true spring: output: ansi: enabled: always datasource: url: jdbc:h2:tcp://localhost/./querydsl username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: #show_sql: true // 아래 두개는 Console창에 출력(똑같은 쿼리문이 2번 날라가니, 둘 중 하나은 끈다) format_sql: true use_sql_comments: true # Querydsl은 결국 JPQL로 변환됨. 변환됨 JPQL을 Console에 보여준다. logging.level: org.hibernate.SQL: de.. 더보기 Querydsl 사용 템플릿 1. 먼저, 각강의 엔티티에 대해서 QType을 생성. 2. 아래 4가지 방법으로 기본적으로 Querydsl 사용 준비를 한다. @SpringBootTest @Transactional public class QuerydslBasicTest { @Autowired EntityManager entityManager; // 필드에서 선언! JPAQueryFactory queryFactory; @BeforeEach void beforeEach(){ // 생성 메서드 같은 거을 따로 만들어서 초기화! queryFactory = new JPAQueryFactory(entityManager); //이하 생략 } @Test // Querydsl 사용법 1] void startQuerydslV1(){ // 여기서 JpA.. 더보기 이전 1 2 3 4 5 6 7 ··· 16 다음