본문 바로가기

장생농

(138)
정렬과 연산 - 날짜 데이터, CASE SQL 첫걸음이란 책을 읽으면서 정리중. 날짜 연산 데이터베이스에선 날짜 DATE, 시간 TIME, 날짜와 시간 DATETIME 형이 있다. 표준 SQL에서는 'CURRENT_TIMESTAMP'라는 함수를 실행하면 현재 시간을 볼 수 있다. SELECT CURRENT_TIMESTAMP; 위 함수를 시용하면 시간을 저장할 수 있다. 또 직접 시간을 지정해서 저장할 수 있는데, 대부분의 데이터베이스 제품은 날짜 서식을 임의로 지정, 변환하는 함수를 지원한다. Oracle : 문자열 데이터를 날짜 데이터로 -> TO_DATE('2014/11/11', 'YYYY/MM/DD') 날짜시간 데이터와 기간형 수치데이터(1일, 2시간, ...)를 사용해 날짜에 덧셈, 뺄셈 연산을 할 수 있다. 또는 날짜에서 날짜를 빼서..
스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 템플릿 엔진, mustache 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 웹 개발에서의 템플릿 엔진 : 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어. 서버 템플릿 엔진은 서버에서 구동된다. 서버에서 java 코드로 문자열을 만든 뒤, 이 문자열을 html로 변환하여 브라우저로 전달한다. 클라이언트 템플릿 엔진은 브라우저 위에서 작동한다. 자바스크립트 코드가 실행되는 장소는 서버가 아닌 브라우저이다. Vue.js, React.js를 이용한 SPA(Single Page Application)는 브라우져에서 화면을 생성한다. -> 서버에서는 이미 코드가 벗어난 경우다. -> 서버에서는 json, xml 형식의 데이터만 전달..
스프링 부트 프로젝트 시작할 때, 몰랐던 것 - JPA(2) 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. API를 만들기 위해 세 가지 클래스가 필요하다. * Request 데이터를 받을 DTO * API 요청을 받을 Controller * 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service -> 여기서 Service는 트랜잭션, 도메인 간의 순서 보장의 역할만 한다. 스프링 웹 계층을 살펴보자 Web Layer : 뷰 템플릿의 영역. 컨트롤러, JSP 등. 더불어 외부 요청과 응답에 대한 전반적인 영역. Service Layer : @Service에 사용되는 영역. 일반적으로 컨트롤러와 DAO의 중간 영역에서 사용된다. -> @Transactional이 사영되어야 하는..
삽질 에러 해결 - cannot resolve symbol, Cannot access .... * cannot resolve symbol * Cannot access .... 위에 에러 때문에 많은 시간을 버렸다ㅎㅎㅎㅎㅎㅎㅎㅎ...... JPA 공부 중에 저런 에러가 나서 메모리 에러인지, 뭐인지 계속 찾아봤는데 이제 보니 그것과 관련있는 것은 아닌 것 같다. https://kim-hoya.tistory.com/45 : 에러 해결방법을 찾았다. 우선 저기서 rebuild project 방법은 효과가 없었다. 두번째 방법인 Sync project with Gradle -- 이 방법도 소용이 없었다. 세번째 방법은 Invalidate Caches였는데, 설정은 기본값 그대로하고 Invalidate and Restart를 눌렀다. 그제서야 제대로 객체가 인식이 됐다. 하..... 끝.
스프링 부트 프로젝트 시작할 때, 몰랐던 것 - JPA(1) 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. JPA는 자바 표준 ORM 기술이다. 웹 애플리케이션에서는 거의 관계형 데이터베이스가 필수이다. 따라서 객체를 관계형 데이터베이스에서 관리하는 것이 중요하다. 하지만 객체지향 언어를 사용한다면 여러 문제가 생긴다. 1. 프로젝트의 대부분이 코드보다 SQL이 가득해짐. -> 관계형 데이터베이스는 SQL로만 조작할 수 있다 보니, CURD에 대한 SQL을 매번 생성해야 한다.(했다.) 2. 패러다임 불일치. -> RDB는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이고 -> 객체지향 프로그래밍 언어는 기능과 속성을 한 곳에서 관리하는 기술이다. -> 이 둘의 시작점 조차 다르..
정렬과 연산 - 수치 연산(함수), 문자열 연산 SQL 첫걸음이란 책을 읽으면서 정리중. SQL은 기본적인 계산 기능을 포함하고 있다. 기본적인 산술 연산 기능을 갖고 있다. -> + - * / %(나머지. MOD를 사용하기도 함.) -> 우선순위는 기본적인 수학 연산에서와 같다. SELECT 구나 WHERE 구에서 사용할 수 있다. 다음과 같은 SAMPLE 테이블이 있다. SELECT *, price * quantity FROM sample; -> 샘플테이블에서 모든 열의 데이터와 단가와 개수를 곱한 값을 출력한다. -> 하지만 이렇게 하면 출력 값에는 'price * quantity'라는 열이 추가되서, 가독성이 떨어진다. -> 이럴 때, AS 구를 사용하면 원하는 이름의 별명을 붙일 수있다. -> SELECT *, price * quantity ..
정렬과 연산 - ORDER BY, LIMIT SQL 첫걸음이란 책을 읽으면서 정리중. ORDER BY 구를 사용하면 검색 결과의 행의 순서를 바꿀 수 있다. SELECT * FROM sample ORDER BY age; : sample의 모든 컬럼을 나이 순서(오름차순)대로 가져와라.(보통 기본값은 오름차순) -> 기본값은 제품마다 다르기 때문에 명시하는 것이 좋다. 내림차순으로 바꾸려면 ORDER BY age DESC로 하면 된다. 오름차순은 기본값이지만 명시한다면 ORDER BY age ASC. WHERE 구와 같이 사용하려면 WHERE 구 뒤에 지정하면 된다. -> SELECT * FROM sample WHERE age=10 ORDER BY name 오름차순, 내림차순을 날짜에서 헷갈릴 수 있다. 최근 날짜일수록 큰 것이다.문자열 데이터는 사..
스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 테스트 코드, 패키지 구조 등등... 이동욱님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 테스트 코드는 중요하다. 대부분 단위 테스트를 필수조건으로 한다. 헷갈리면 안되는 것이 TDD와 단위 테스트는 다른 것이다. TDD = 테스트가 주도하는 개발. (Test Driven Develepment) 1. 실패하는 테스트 코드를 먼저 작성하고 2. 테스트를 통과하는 프로덕션 코드를 짜고 3. 성공하는 프로덕션 코드를 리팩토링한다. 단위 테스트 = TDD의 첫 번째 단계인 "기능 단위의 테스트 코드"를 작성하는 것. 왜 테스트 코드를 작성해야 하나? 왜 중요한가? * 개발단계 초기에 문제를 발견하도록 도와준다. * 나중에 코드를 리팩토링하거나, 라이브러리가 업그레이드 되..