본문 바로가기

웹 프로그래밍

(63)
JavaScript 기초 : javascript 사용 이벤트 (사용자와 상호작용) : 버튼 생성과 버튼 이름 hi 속성 onclick="자바스크립트 코드" : 클릭시 실행됨 -> 동적으로 자바스크립트 코드 삽입 가능 document.querySelector("#night_day").value = "night"; -> id를 통해 value값 접근및 수정 가능 리팩토링 태그를 자신을 가리킬때는 this를 쓰면 편함 (this.value) 자주 쓰이는 부분은 변수로 지정 var target = document.querySelector("#night_day").value; 함수에서 this 함수에서 this를 쓸경우 전역변수로 쓰인다 -> 따라서 함수에서 this를 self로 고치고 매개변수로 현재 태그의 this를 받아야 한다 객체..
CSS 기초 또는 CSS 이렇게 style 속성과 함께 씀 a -> selector {} -> declaration color(property) red(value) h1 { font-size: 55px; text-align: center; } -> 폰트 사이즈와 가운데 정렬 우선순위 id 선택자(#) > class 선택자(.) > 태그 선택자 동등한 우선순위일 경우 가장 마지막의 코드가 적용됨 박스 모델 h1{ border: 5px solid red; padding: 20px; margin: 20px; display: block; width: 100px; } grid (무색무취) : 그룹핑해서 grid를 사용하여 레이아웃을 하거나 아이디값 부여할때 주로 사용(줄바꿈) : 와 똑같으나 줄바꿈하지 않음 #grid { d..
HTML 기초 TAG는 설명 : 전체 html 코드를 감싸는 태그 : 본문을 설명하는 태크 : 웹페이지 제목 : utf-8로 html를 해석 : 본문 : 진하게 : 밑줄 쫙 : 줄바꿈 : 단락 줄바꿈(br과 비슷하지만 더 정보를 담고있음)
Querydsl 중급 프로젝션: select의 대상 지정 (차원이 줄어듬) List result = quertFactory.select(member.username).from(member).fetch(); 프로젝션 대상이 둘이상이면 튜플(가급적 리포지토리 계층안에서만 사용)이나 DTO로 조회(권장) List result = quertFactory.select(member.username, member.age).from(member).fetch(); 프로젝션과 결과반환 - DTO 순수 JPA에서 DTO 조회할때는 new 명령어로 패키지 명까지 적어줘야함(귀찮음) Querydsl 빈생성 방식 -프로퍼티 접근(setter) List result = queryFactory .select(Projections.bean(MemberDt..
Querydls 기본 use_sql_comments: true 추가시 Querydls이 어떻게 JPQL로 바뀌는지 주석으로 확인 가능 검색 조건 쿼리 member.username.eq("member1") // username = 'member1' member.username.ne("member1") // username != 'member1' member.username.isNotNull() // 이름이 is not null member.age.in(10, 20) // age in (10, 20) member.age.notIn(10, 20) // age not in (10, 20) member.age.between(10, 30) // between 10, 30 member.age.goe(30) // age >= 30(grea..
스프링 데이터 JPA 메소드 이름만으로 쿼리 생성 기능(강력함): 간단한 쿼리들 해결가능 findByLastnameAndFisrtname -> where x.lastname = ?1 and x.fisrtname = ?2 findByFirstname(Is) -> where x.fisrtname = ?1 findByStartDateBetween -> where x.startDate between ?1 and ?2 findByAgeGreaterThanEqual -> where x.age >= ?1 findByFirstnameLike -> where x.firstname like ?1 findByFirstnameContaining -> where x.firstname like ?1 ('%member%') findByAgeOrderB..
JPA 활용(2) 팁 정리 @ResponseBody 데이터 자체를 Json으로 보냄 @Valid 엔티티를 검증함 엔티티가 바뀌면 API 스펙도 같이 바껴버림 -> 엔티티를 바로 쓰는것이 아니라 API 스펙에 맞춰서 별도의 DTO 클래스로 해결 -> 안정적인 운영가능 엔티티는 노출이 안되는 방향으로 설계 해야함 의존관계는 Controller -> Service -> Repository 이런식으로 한방향으로 흘러야함(단방향) Repository는 가급적 순수한 엔티티를 다루는 용 복잡한 api 화면처리는 따로 QueryRepository화 시켜서 클래스로 만듬(구별) -> 유지, 보수 DTO 안에서도 엔티티가 있으면 그것까지 DTO로 바꾸어야함 (겉과 속이 같이) 일대다(컬렉션)를 페치 조인 하는 순간 페이징이 불가함(데이터가 뻥튀기..
JPA 활용(1) 팁 정리 build.gradle 에 implementation 'org.springframework.boot:spring-boot-devtools' 추가시 리컴파일만 다시해주면 서버다시 띄울필요없이 새로고침 가능 처음 프로젝트를 만들때 Execution failed for task ':test'. ctrl+alt+s를 눌러 settings에 들어가서 테스트구동을 Gradle -> intellij로 바꿔줘야 함 @Transactional 이 테스트에 있으면 롤백됨 롤백 안되게 하려면 @RollBack(false) 쿼리의 (?, ?)을 보고싶을때 일단 yml 파일을 수정 추적 가능 org.hibernate.type : trace 아예 (?, ?)를 속성으로 대체하고 싶을때(파라미터 바인딩): 개발중에 눈에 안보이면 ..