study (126) 썸네일형 리스트형 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 템플릿 엔진, 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이 사영되어야 하는.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 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의 첫 번째 단계인 "기능 단위의 테스트 코드"를 작성하는 것. 왜 테스트 코드를 작성해야 하나? 왜 중요한가? * 개발단계 초기에 문제를 발견하도록 도와준다. * 나중에 코드를 리팩토링하거나, 라이브러리가 업그레이드 되.. 삽질 - 스프링 부트 테스트 코드 에러 날 때(Run with ....) 두번이나 당했다. 실제 애플리케이션을 잘 실행되는데, 테스트 코드만 이렇다. 스프링 이니셜라이즈에서 만든 프로젝트는 이런 일이 없던 것 같은데, 최근에 다른 프로젝트를 가져왔을 때나, gradle 프로젝트에서 스프링 프로젝트를 만들어서 테스트 코드를 실행할 떄 계속 이런 에러가 났다. "Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0." -> 지원 중단된 그래들 기능이 사용됐다고 한다. 다른 블로그 글들을 찾아보니 그래들 버전을 수정하는 방법은 아니고. 테스트할 때, 그래들이 아닌 인텔리제이를 사용해 테스트 하도록 바꿨다. 그런데 나는 이렇게 해도 실패했다. 다른 방법을 찾았다. 이번 기회에.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - build.gradle, .gitignore 사용하기 보통 강의나, 책을 보면 스프링 이니셜라이즈를 사용하여 프로젝트를 시작했다. 그래서 build.gradle은 중간에 라이브러리 추가할 때 말고는 잘 안봤는데, 이동욱님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 이 책에서는 인텔리제이에서 그래들 프로젝트를 만든 후 스프링 부트를 받았다.(신기방기) 아래 코드는 그래들 프로젝트를 설정한 후, build.gradle에 코드들을 추가한 것이다. 그래들의 버전은 6.8이다. 그래들은 책한권이 나올정도로 내용이 많다. 간단하게 알아보겠다. plugins 블로에 있는 코드는 플러그인 의존성들을 적용한다는 것이다. 특히 io.spring.dependency-management' 는 의존성들.. 이전 1 2 3 4 5 6 7 ··· 16 다음