-
Node.js 교과서 8장을 공부하고
Node.js 교과서 8장을 공부하고 ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다. https://github.com/gilbutITbook/080229 8 MongoDB NoSQL vs. SQL 고정된 테이블이 없고 자유로운 데이터 입력이 가능 확장성과 가용성, 속도 컬렉션 간 JOIN을 지원하지 않음 (비슷하게는...
-
Node.js 교과서 7장을 공부하고
Node.js 교과서 7장을 공부하고 ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다. https://github.com/gilbutITbook/080229 7.6 sequelize를 통하여 CRUD 작업하기 sequalize.js는 node.js 에서 MySQL 작업을 쉽게 할 수 있도록 도와주는 ORM 라이브러리 MySQL이외에도 MariaDB, PostgreSQL, SQLite,...
-
Node.js 교과서 6장을 공부하고
Node.js 교과서 6장을 공부하고 ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다. https://github.com/gilbutITbook/080229 6.1 익스프레스 프로젝트 시작하기 package.json 생성 "scripts" : { "start" : "nodemon app" }, .. 6.2 자주 사용하는 미들웨어 미들웨어 요청과...
-
Node.js 교과서 3장을 공부하고
Node.js 교과서 3장을 공부하고 ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다. https://github.com/gilbutITbook/080229 모듈로 만들기 var.js exports.odd = '홀수입니다'; exports.even = '짝수입니다'; func.js const { odd, even } = require('./var'); function checkOddOrEven(num) { if...
-
Node.js 교과서 2장을 공부하고
Node.js 교과서 2장을 공부하고 ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다. https://github.com/gilbutITbook/080229 var, const, let var 사용하지 말기 (혼란을 야기함) const, let 사용 const: 한번 값을 할당하면 변경 불가 let: 변수로 사용 (스코프...
-
Node.js 교과서 1장을 공부하고
Node.js 교과서 1장을 공부하고 2월 15일 입사를 하고 일이 바빠 블로그를 못하고 지내다가, 슬슬 다른 공부가 하고 싶어져서 기존에 활동하던 동아리에 활동 신청을 하고 Node.js 공부를 하게 되었다. ⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다. ⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만...
-
수인약품 개발일지 2차 git
수인약품 개발일지 2차 1. 깃 강의 개발에서 가장 중요하다고 생각되는 것들 중 하나는 협업이라고 생각한다. 협업을 위해서는 의사소통과 서로 준구 난방의 코드를 작성하지 않기 위해서 약속과 규칙을 정해야한다. 그리고 깃을 통해 버전관리를 하고 다 같이 프로젝트를 만들어가야한다. ‘준’친구의 경우에는 깃을 통한 협업의 경험이 있기 때문에 깃 사용문제에 있어서는 문제가 없지만,...
-
수인약품 개발일지 1차 시작
수인약품 개발일지 1차 1. 시작 먼저 앞서 나는 안드로이드 앱으로 수인약품 어플을 만든 전적이 있다. 구글 플레이 스토어 정책에 대해서 무지했기 때문에, 약품이 조금이라도 관련되면 일체 스토어에 올릴 수 없다는 이야기를 다 만들고서야 알게 되었다. 고생해서 만들었기 때문에 올리기 위해서 여러번 문의를 넣었지만 불가능했다. 그래서 다른 쇼핑몰처럼 웹페이지를 만들어달라는 요청사항을...
-
프로그래머스 SQL 입양 시각 구하기(2)
프로그래머스 SQL 입양 시각 구하기(2) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/59413 SELECT B.TIME AS HOUR, COUNT(ANIMAL_ID) AS COUNT FROM (SELECT LPAD(LEVEL - 1, 2, 0) TIME FROM DUAL CONNECT BY LEVEL < 25) B, ANIMAL_OUTS A WHERE B.TIME = TO_CHAR(DATETIME(+), 'HH24') GROUP BY B.TIME ORDER BY B.TIME; (1)은 그냥 주어진 DATETIME 내에서...
-
JPA JPQL 페치 조인
페치 조인 1. 엔티티 페치 조인 연관 관계 매핑할 때 가장 중요한 점은 OneToOne이나 ManyToOne은 지연 로딩 처리해줘야 한다는 점이였다. 지연 로딩을 하지 않고 즉시 로딩을 하게 되면 연관된 엔티티를 모두 가져오면서 디비 조회 낭비가 이루어지기 때문이다. 하지만 지연로딩으로 처리해도 문제가 발생한다. 아래의 코드를 보자. String query ="select m from...
-
JPA JPQL 엔티티 직접 사용
엔티티 직접 사용 1. 기본 키 값 JPA에서 엔티티를 직접 이용하게 되면 엔티티의 기본 키 값을 이용한 것과 동일하게 된다. [JPQL] select count(m.id) from Member m //엔티티의 아이디를 사용 select count(m) from Member m //엔티티를 직접 사용 [SQL](JPQL 둘다 같은 다음 SQL 실행) select count(m.id) as cnt from Member m...
-
JPA JPQL 벌크 연산
벌크 연산 JPA 변경 감지로 공통된 값들을 조회하기엔 너무 벅차다. 또 변경된 데이터가 1000만 건이라면 1000만 건의 SQL을 실행해야한다. 이것을 해결하기 위한 연산이 벌크 연산이다. 쿼리 한 방으로 여러 테이블의 열 값을 변경할 수 있다. 예제 // Flush가 자동호출된다. commit, query 나갈때 자동으로 호출된다. int resultCount = em.createQuery("update Member m...
-
JPA JPQL 다형성 쿼리
다형성 쿼리 TYPE 조회 대상을 특정 자식으로 한정하는 쿼리이다. select i from Item i where type(i) IN (Book, Movie) TREAT 다운 케스팅과 유사하다. 부모 타입에서 자식 타입으로 다룰 때 사용한다. select i from Item i where treat(i as Book).auther = ‘kim’
-
JPA JPQL Named Query
Named 쿼리 Named 쿼리는 미리 정의해두고 이름을 부여해 사용하는 JPQL 문법이다. 동적 쿼리에는 사용할 수 없으며, 정적 쿼리에만 사용할 수 있다. 엔티티에 어노테이션으로 지정하거나 xml에 정의해둘 수 있다. 이게 장점이 뭐냐면 .. 애플리케이션 로딩 시점에 쿼리를 검증해서 미리 오류를 잡을 수 있다는 점이다. 1. 어노테이션 방식 @Entity @NamedQuery( name =...
-
JPA JPQL 함수
1. JPQL 기본 함수 CONCAT, SUBSTRING, TRIM, LOWER, UPPER, LENGTH, LOCATE, ABS, SQRT, MOD, SIZE 등등 SQL문법 그대로 사용가능. 2. 사용자 정의 함수 호출 만약 사용자 정의 함수가 있다면 호출하는 방법은 다음과 같다. 1) 먼저 패키지를 하나 파고 사용자 정의 Dialect 클래스를 생성한다. package dialect; import org.hibernate.dialect.H2Dialect; import org.hibernate.dialect.function.StandardSQLFunction; import...
-
JPA JPQL 타입 표현과 기타식
JPQL 타입 표현은 SQL과 동일하다. TYPE EXAMPLE String ‘Hello world’, ‘Hello’ Number 100L (Long), 100D (Double), 100F (Float) Boolean TRUE, FALSE Enum Spa.MemberType.User (jpql스트링에 넣을 땐 패키지 명을 반드시 포함해야한다.) Entity TYPE(m) = Member (상속 관계에서 사용한다.) 1. 타입 표현 /* 1. */ String jpql = "select m.username, 'HELLO', true...
-
JPA JPQL 조건식
1. CASE String jpql = "select " + "case when m.age <= 10 then '학생요금' " + "when m.age >= 60 then '학생요금' " + "else '일반요금' " + "end " + "from Member m "; List<String> result = em.createQuery(jpql, String.class).getResultList(); SQL의 CASE처럼 똑같이 사용가능 위는 기본 케이스 식이고 SIMAPLE...
-
JPA JPQL 서브쿼리
JPA JPQL에서도 마찬가지로 서브쿼리를 사용할 수 있다. 비연관 서브 쿼리 select m from Member m where m.age > (select avg(mm.age) from Member mm) 메인 쿼리에서 Member를 사용하고 서브쿼리에서 다시 Member를 사용하고 있지만, 두 Member는 쿼리상에서는 연관이 있지않다. 이런 방식으로 서브쿼리를 사용할 수 있다. 연관 서브 쿼리 select m from Member...
-
JPA JPQL 함수
경로 표현식 점을 (.)을 찍어서 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다. select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드 where t.name = '팀A' 여기서 m.username은 단순히 필드를 불러온 값이다. 밑의 m.team의 경우에는 엔티티를...
-
JPA JPQL 프로젝션
프로젝션이란 SELECT절에 조회 대상을 지정하는 것이다. 프로젝션의 대상은 가장 기본적으로 엔티티 타입, 스칼라 타입(원하는 값만 뽑고 싶을 때), 드물지만 임베디드 타입이 있다. SELECT m FROM Member m // 엔티티 프로젝션 SELECT m.team FROM Member m // 엔티티 프로젝션 SELECT m.address FROM Member m // 임베디드 타입 프로젝션 SELECT m.username, m.age...
-
JPA JPQL 페이징
JPA를 이용하면 페이징이 매우 단순해진다. 구현의 추상성은 개발자가 구상하고 그에 대한 구현은 JPA가 해주는 꼴이다. setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작) setMaxResults(int maxResult) : 조회할 데이터 수 이 두개만 있으면 페이징을 구현할 수 있다. 조회 시작위치를 지정하고 조회할 데이터의 수를 넣으면 그만큼의 값을 가져온다. 페이징 구현 코드 for...
-
JPA JPQL 파라미터 바인딩
SQL에서 동적으로 값을 집어넣을 수 있듯, JPA에서도 마찬가지로 파라미터 바인딩이 가능하다. 문자 기준 파라미터 바인딩 SELECT m FROM Member m where m.username=:username query.setParameter("username", param); 문자 기준 파라미터 바인딩이라고 하니 뭔가 어감이 이상한데, 위의 코드를 그대로 동적으로 들어갈 위치의 이름을 지정해서 거기에 값을 집어넣는 것이다. 위치 기준 파라미터 바인딩 SELECT m...
-
JPA JPQL 조인(JOIN)
조인은 튜닝에 있어서 정말 중요한 요소를 차지한다. 제대로 알아두자. 조인은 크게 내부(inner)조인, 외부(outer)조인, 세타(theta)조인이 있다. 세타조인은 외래키로 해당사항이 없는 서로 두 테이블을 조인하는 것인데, 여기서 조인 조건이 빠지면 카르테시안 곱으로 이루어지는 조인을 세타조인이라고 한다. 크로스조인, 막조인이라고 하기도 한다. 1. 내부 조인 String jpql = "select m from Member m inner...
-
Hello World!
깃허브 페이지 블로그 개설!