- Today
- Total
목록Framework (56)
개발하는 고라니
데이터베이스의 테이블은 종종 '시간'의 데이터를 갖는 컬럼이 존재하는 경우가 있다. 예를 들어 Board 테이블의 Reg Date라던지 Mod Date 등등.. JPA를 이용한다고 해서 예외는 아니다. MyBatis를 이용했다면 직접 SQL을 작성해서 Reg Date/Mod Date의 관련된 정보를 Insert 및 Update를 했겠지만. JPA에서는 이를 직접 관여할 필요가 없어졌다. 각설하고, 등록된 날짜와 수정된 날짜는 다양한 테이블에서 사용될 수 있다. 그럼 개발자의 입장에서 중복된 것은 극도로 싫어하므로 이를 하나의 엔티티에 설정해놓고 나머지 엔티티들이 상속을 받는다면 중복을 줄일 수 있지 않을까? 간단히 regDate와 modDate를 갖는 상속용 엔티티를 만들어보자. 이름을 BaseEntit..
# JPQL JPQL(Java Persistence Query Language)는 JPA(Java Persistence API)의 일부로 정의된 플랫폼에 독립적인 객체지향 쿼리 언어이다. JPQL은 관계형 데이터베이스의 엔티티에 대한 쿼리를 만드는데 사용된다. JPA는 엔티티 객체를 중심으로 개발하므로 SQL을 사용하지 않는다. 하지만 검색쿼리를 사용할 때는 SQL을 사용해야 한다. SQL의 영향을 받아 SQL과 비슷하나, DB 테이블에 직접 접근하는 것이 아닌 JPA 엔티티에 동작한다. 그래서 JPQL의 쿼리에는 테이블이 아닌 엔티티에서 사용되는 컬럼의 이름을 사용해야 한다. * SQL : 데이터베이스 테이블을 대상으로 쿼리함 * JPQL : 엔티티 객체를 대상으로 쿼리함 # JPQL로 검색을? 웹 어..
저번 포스팅에서 app.get , app.post , app.use ...와 같이 사용되어지는 미들웨어를 썼다. 이는 어플리케이션 단에서 동작하는 미들웨어이다. 다음과 같이 미들웨어는 몇 가지의 종류가 존재한다. Application Level Middelware Router Level Middleware Error Handling Middelware Built in Middelware Third party Middleware # Application Level Middleware 2021/01/08 - [Programming/Node.js] - [Node.js] Middleware 생성 [Node.js] Middleware 생성 이전에 Body-parser라는 어떤 고마운 분이 만들어준 미들웨어를 사용..
이전에 Body-parser라는 어떤 고마운 분이 만들어준 미들웨어를 사용해보았다. 그런데 신기하게도, request에 body라는 property가 없었는데 어떻게 생긴걸까? 간단한 미들웨어를 만들어며 알아보자. Express의 Guide탭 중에 'Writing Middleware'라는 항목을 보면, 다음과 같은 예시가 있다. var express = require('express') var app = express() var myLogger = function (req, res, next) { console.log('LOGGED') next() } app.use(myLogger) app.get('/', function (req, res) { res.send('Hello World!') }) app.l..
Node.js는 보편적으로 'Express'라는 웹 프레임워크를 사용한다. 최근 'koa'의 사용빈도도 증가추세이다. 'koa'는 'Express'를 개발한 사람들이 모종의 이유로 새로이 만든 프레임워크로 알고있다. 그래서 사용방법도 거의 비슷하다고 볼 수 있다. Express, koa같은 웹 프레임워크가 무엇인지에 대해서는 나중에 다시 포스팅 하기로 하고... 오늘은 node.js에서 로 보낸 데이터를 사용해보는 방법을 익힌다. 'body-parser'를 사용하기 전엔 다음과 같은 방법을 사용했다. '/create'라는 URL로 id와 비번을 보내 회원가입을 하는 작업을 예를 들어보자. 제출 const express = require('express'); const qs = require('qs'); ..
//플러그인 추가 plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } //의존성 주입 dependencies { implementation 'com.querydsl:querydsl-jpa' } //Gradle에서 사용할 추가적인 task def querydslDir = "$buildDir/generated/querydsl" querydsl{ jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations{ querydsl.extendsFrom compileClasspath } compileQuerydsl{ opti..
# ORM과 JPA - JPA(Java Persistence API) Java Persistence API의 약자로 Java 언어를 통해 DB와 같은 영속 계층을 처리하고자 하는 스펙이다. JPA를 이해하기 위해 ORM(Object Relational Mapping)이라는 기술을 선행해야 한다. ORM을 Java 언어에 맞게 사용하는 '스펙'이다. 따라서 ORM이 조금 더 상위 스펙이되고, JPA는 Java 언어에 국한된 개념이라고 볼 수 있다. JPA는 단순한 스펙이기 때문에 해당 스펙을 구현하는 구현체마다 회사의 이름이나 프레임워크의 이름이 다르게 된다. 다양한 프레임워크가 있지만 가장 유명한 것은 'Hibernate'이다. 기존 EJB에서 제공되던 Entity Bean을 대체하는 기술이다. ORM이..
* '코드로 배우는 스프링 웹 프로젝트' 교재를 1.5회(?) 완독 후, 스스로의 힘으로 게시판을 구현해보았다. 물론 미흡한 점이 심심찮게 발견되어 수정의 수정을 거듭했다. 그렇게 3~4주를 보내고 나니 다음엔 무엇을 만들어볼까 하던 차에, 문득 떠오른 것이 있다. '무수히 많은 치킨 브랜드가 있고, 그 많은 메뉴들을 한 곳에서 모아보면 어떨까?' 그래서 프로젝트라고 하기엔 뭣하지만 원하는 작업을 구현해보며 모르는 부분이 있으면 배워가고, 알던 내용이 있으면 다시 되새기는 목적을 가지고 시도해보려 한다. 먼저 '푸라닭' 사이트에서 메뉴 정보들을 크롤링해 뿌려주는 식으로 시작해보고 결과가 괜찮으면 다른 브랜드들도 시도해보는 식으로 점차 넓혀가겠다. * 교촌치킨의 메뉴 중 '교촌라이스세트'라는 메뉴의 이미지..