일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 다대다
- 다대일
- 연관관계
- SQL프로그래밍
- dfs
- 지연로딩
- querydsl
- exclusive lock
- 힙
- eager
- 낙관적락
- 일대다
- 백트래킹
- fetch
- 데코레이터
- 동적sql
- CHECK OPTION
- 연결리스트
- 스프링 폼
- PS
- 이진탐색
- FetchType
- 스토어드 프로시저
- 비관적락
- shared lock
- BOJ
- 유니크제약조건
- JPQL
- 즉시로딩
- execute
- Today
- Total
목록전체 글 (556)
흰 스타렉스에서 내가 내리지
- com.querydsl.jpa.JPAExpressions 사용 /** * 서브 쿼리 * 나이가 가장 많은 회원 조회 */ @Test public void subQuery() { QMember memberSub = new QMember("memberSub"); List result = queryFactory .selectFrom(member) .where(member.age.eq( JPAExpressions .select(memberSub.age.max()) .from(memberSub) )) .fetch(); assertThat(result).extracting("age").containsExactly(40); } /** * 나이가 평균 나이 이상인 회원 */ @Test public void subQ..
https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다익스트라 문제인데, 직전시점에서, 한 지점에 도달하는 경우가 n가지라면, distance 배열을 n차원 배열로 만들어라 # https://school.programmers.co.kr/learn/courses/30/lessons/67259# import heapq from collections import defaultdict dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] ..
join(조인 대상, 별칭으로 사용할 Q타입) # 기본 조인 /** * 팀 A에 소속된 모든 회원 */ @Test public void join(){ QMember member = QMember.member; QTeam team = QTeam.team; List result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("username") .containsExactly("member1", "member2"); } join(), innerJoin() : 내부 조인 (inner join) leftJoin() : left ..
# 집합 함수 /** * JPQL * select * COUNT(m), // 회원 수 * SUM(m.age), // 나이 합 * AVG(m.age), // 평균 나이 * MAX(m.age), // 최대 나이 * MIN(m.age), // 최소 나이 * from Member m */ @Test public void aggregation(){ List result = queryFactory .select(member.count(), member.age.sum(), member.age.avg(), member.age.max(), member.age.min()) .from(member) .fetch(); Tuple tuple = result.get(0); assertThat(tuple.get(member.cou..
# 정렬 /** * 회원 정렬 순서 * 1. 회원 나이 내림차순 (desc) * 2. 회원 나이 오름차순 (asc) * 단 2에서 회원 이름이 없으면 마지막에 출력 (nulls last) */ @Test public void sort(){ em.persist(new Member(null, 100)); em.persist(new Member("member5", 100)); em.persist(new Member("member6", 100)); List result = queryFactory .selectFrom(member) .where(member.age.eq(100)) .orderBy(member.age.desc(), member.username.asc().nullsLast()) .fetch(); Me..
fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환 fetchOne() : 단 건 조회 결과가 없으면 : null 결과가 둘 이상이면 com.querydsl.core.NonUniqueResultException 발생 fetchFirst() : limit(1).fetchOne() fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행 DEPRECATED fetchCount() : count 쿼리로 변경해서 count 수 조회 DEPRECATED @Test public void resultFetch(){ List fetch = queryFactory .selectFrom(member) .fetch(); Member member1 = queryFactory .sele..
# 기본 검색 쿼리 @Test public void search(){ Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1") .and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색 조건은 .and(), .or() 를 메서드 체인으로 연결할 수 있다. 참고 : select, from 을 selectFrom 으로 합칠 수 있다. # JPQL 이 제공하는 모든 검색 조건 제공 member.username.eq("member1") // username = 'member1' membe..
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def preorder(self, res=[]): res.append(self.val) if self.left is not None: self.left.preorder(res) if self..
뷰는 테이블처럼 데이터를 가지고 있지는 않다. 뷰의 실체는 SELECT 문으로 만들어져 있기 때문에, 뷰에 접근하는 순간 SELECT 가 실행되고 그 결과가 화면에 출력되는 방식이다. 비유하자면 바탕화면의 '바로 가기 아이콘' 과 비슷하다. 뷰를 만드는 형식 CREATE VIEW 뷰_이름 AS SELECT ~~; CREATE VIEW v_member AS SELECT mem_id, mem_name, addr FROM member; 뷰는 기본적으로 '읽기 전용' 으로 사용되지만, 뷰를 통해서 원본 테이블의 데이터를 수정할 수도 있다. # 뷰를 사용하는 이유 보안에 도움이 된다 예시 : 아르바이트생에게 회원 조회 작업을 시킨다. 그런데 아르바이트생이 회원 테이블에 접근할 수 있도록 한다면 중요한 개인 정보까..
기본값(default) 정의는 값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 방법이다. 예를 들어 키를 입력하지 않고 기본적으로 160이라고 입력되도록 하고 싶다면 다음과 같이 정의할 수 있다. CREATE TABLE member ( ... ... height TINYINT UNSIGNED NULL DEFAULT 160, ... ); ALTER TABLE 사용 시 열에 DEFAULT 를 지정하기 위해서는 ALTER COLUMN 문을 사용한다. 예를 들어, 다음과 같이 연락처의 국번을 입력하지 않으면 자동으로 02가 입력되도록 할 수 있다. ALTER TABLE member ALTER COLUMN phone SET DEFAULT '02'; 기본 값이 설정된 열에 기본값을 입력하려면 def..