일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데코레이터
- shared lock
- JPQL
- 스토어드 프로시저
- 연관관계
- 백트래킹
- 비관적락
- BOJ
- 동적sql
- 힙
- 낙관적락
- fetch
- 즉시로딩
- PS
- CHECK OPTION
- 일대다
- dfs
- 유니크제약조건
- 다대일
- exclusive lock
- 다대다
- 지연로딩
- eager
- SQL프로그래밍
- querydsl
- 스프링 폼
- 이진탐색
- FetchType
- execute
- 연결리스트
- Today
- Total
목록All (557)
흰 스타렉스에서 내가 내리지
애플리케이션 아키텍처 계층형 구조 사용 - controller, web: 웹 계층 - service: 비즈니스 로직, 트랜잭션 처리 - repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 - domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용 강의 1. 회원 레포지토리 개발 기술 설명 @Repository : 스프링 빈으로 등록, JPA 예외를 스프링 기반 예외로 예외 변환 @PersistenceContext : 엔티티 메니저( EntityManager ) 주입 @PersistenceUnit : 엔티티 메니터 팩토리( EntityManagerFactory ) 주입 기능 설명 save() findOne() findAll() findByName() 강의 2. 회원 서비스 개발 기..
보호되어 있는 글입니다.
강의 1. 프로젝트 생성 * 요즘은 템플릿 엔진으로 jsp를 잘 쓰지 않는다. 대신 thymeleaf 사용. * h2는 개발하거나 테스트할 때 좋다. IntelliJ에서 다운로드 받은 폴더 open build.gradle 파일을 통해 라이브러리를 다운받는데, 시간이 굉장히 오래걸릴것이다. 롬복 적용 1. Prefrences plugin lombok 검색 실행 (재시작) 2. Prefrences Annotation Processors 검색 Enable annotation processing 체크 (재시작) 3. 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인 ++ IntelliJ Gradle 대신에 자바 직접 실행 > 참고: 강의에 이후에 추가된 내용입니다. 최근 IntelliJ 버전은 ..
조인 (join)이란 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 일대다 관계의 이해 두 테이블의 조인을 위해서는 기본 키 - 외래 키 관계로 맺어져야 하고, 이를 '일대다 관계'라고 부른다. 두 테이블의 조인을 위해서는 테이블이 일대다 (one to many) 관계로 연결되어야 한다. 일대다 관계란 한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계를 말한다. 예를 들어, 회원테이블의 아이디는 기본 키(Primary Key)이고, 구매 테이블의 아이디는 외래 키(Foreign Key)이다. 내부 조인 일반적으로 조인이라고 부르는 것은 내부 조인(inner join)으로, 가장 많이 사용된다. SELECT FROM INNER..
정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ 127 SMALLINT 2 -32,768 ~ 32,767 INT 4 약 -21억 ~ +21억 BIGINT 8 약 -900경 ~ +900경 0부터 시작되는 UNSIGNED 예약어를 사용할 수 있다. TINYINT UNSIGNED 를 사용하면 0~255의 숫자 범위를 사용할 수 있다. 그러면 사람의 키를 저장하기 좋은 숫자범위가 되겠다. 마찬가지로 SMALLINT UNSIGNED는 0부터 65535까지 저장된다. 문자형 데이터 형식 바이트 수 CHAR (개수) 1 ~ 255 VARCHAR (개수) 1 ~ 16383 CHAR는 고정길이 문자형이다. 즉, 자릿수가 고정되어 있다. 예를 들어, CHAR(10)에 '가나다' 3글자만 저장해도 1..
INSERT INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...) 테이블 이름 다음에 나오는 열은 생략 가능하다. 열 이름을 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다. toy_id와 toy_name만 입력하고 age는 입력하고 싶지 않다면 다음과 같이 테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다. 이 경우 생략한 age 열에는 아무것도 없다는 의미의 NULL 값이 들어간다. AUTO_INCREMENT AUTO_INCREMENT 는 열을 정의할 때 1부터 증가하는 값을 입력해준다. INSERT에서는 해당 열이 없다고 생각하고 입력하면 된다. 단, 주의할 점은 AUTO_INCREMEN..
SELECT 문에서는, 결과의 정렬을 위한 ORDER BY, 결과의 개수를 제한하는 LIMIT, 중복된 데이터를 제거하는 DISTINCT 등을 사용할 수 있다. GROUP BY는 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출하고, HAVING 절을 통해 조건식을 추가할 수 있다. ORDER BY SELECT 열_이름 FROM 테이블_이름 WHERE 조건식 GROUP BY 열_이름 HAVING 조건식 ORDER 열_이름 LIMIT 숫자 ORDER BY 는 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절한다. debut_date가 늦은 순서대로 정렬하려면, 제일 뒤에 DESC라고 붙여주면 된다. 기본값은 ASC이다. 정렬 기준은 1개 열이 아니라 여러 개 열로..
USE USE 데이터베이스_이름; '지금부터 이 DB를 사용하겠으니 모든 쿼리는 이 DB에서 실행하라' 앞으로 모든 SQL 문은 '데이터베이스_이름' 에 해당하는 데이터베이스에서 수행된다. SELECT SELECT select_expr [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr | position}] [HAVING where_condition] [ORDER BY {col_name | expr | position}] [LIMIT {[offset,] row_count | row_count OFFSET offset}] -- 대괄호로 묶인 부분은 생략이 가능하다. * SELECT, FROM 원래 테이블의 전체 이름은 데이..
데이터베이스에서는 테이블 외에 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등의 개체도 필요하다. 요약 인덱스 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해준다. 뷰 테이블의 일부를 제한적으로 표현할 때 주로 사용한다. 스토어드 프로시저 SQL에서 프로그래밍이 가능하도록 해준다. 트리거 잘못된 데이터가 들어가는 것을 미연에 방지하는 기능을 한다. 인덱스 인덱스(index)란 책의 제일 뒤에 수록되는 '찾아보기'와 비슷한 개념이다. 찾아보기를 통해 먼저 해당 언어를 찾고 바로 옆에 적혀 있는 페이지로 이동하는 효율적인 방법을 사용하는 것이다. 'Full Table Scan' 이라고 나오는데, 이는 '전체 테이블 검색'이다. 즉, 처음부터 끝까지 조회를 해서 '아이유'를 찾은 것이..