Entity에는 데이터의 생성 시간과 수정 시간이 포함된다. 이 생성 시간과 수정 시간은 유지보수에 중요한 정보로 사용된다. 그렇기 때문에 DB에 삽입, 갱신 전 날짜 데이터를 등록/수정하는 코드가 여러 곳에 들어간다. 이런 코드가 여러 곳에 추가하는 일은 귀찮기도 하고 코드가 지저분해진다. 따라서 위와 같은 문제를 해결하기 위해서 JPA Auditing을 사용한다. Java의 날짜와 시간 API를 보면 java 8 전후로 날짜와 시간 관련한 내용을 볼 수 있다. import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDat..
HTML은 위에서 부터 코드가 실행된다. head가 다 실행되고 난 후에 body가 실행되기 때문에, head가 다 불러지지 않으면 사용자는 빈 화면만 볼 수 있다. 따라서 css는 header, js footer에 두는 것이 좋다. js는 용량이 크면 body 부분의 실행이 늦어지기 때문에 js는 body 하단에 두어 화면이 다 불러온 후에 호출하는 것이 좋다. 이와 달리, css는 화면을 그릴 때 사용되기 때문에, head에서 불러와서 css가 적용되지 않은 깨진 화면을 보는 것을 방지하는 것이 좋다.
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dcUEza/btrfVuF425r/3sBCC5RiGOWcP4iVuqnWVK/img.png)
API를 만들기 위해서 필요한 3개의 클래스 Dto: Request 데이터를 받음 Controller: API 요청을 받음 Service: 트랜잭션, 도메인 기능 간의 순서를 보장 💡 Service에서 비즈니스 로직을 처리하는 것이 아니다. Service는 트랜잭션, 도메인 간 순서 보장의 역할만 한다. Web Layer 컨트롤러(@Controller)와 JSP/Freemaker 등의 뷰 템플릿 영역 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao의 중간 영역에서 사용 @Transactional이 사용되어야 하는 영역 R..
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 서버 템플릿 엔진과 클라이언트 템플릿 엔진 서버 템플릿 엔진은 서버에서 구동된다. 서버 템플릿 엔진을 이용한 화면 생성 방식은 다음과 같다. 서버에서 Java 코드로 문자열을 만듦 문자열을 HTML로 변환 HTML을 브라우저로 전달 자바스크립트 코드는 브라우저 위에서 작동한다. 따라서 React.js나 Vue.js가 포함되는 클라이언트 템플릿은 브라우저에서 화면을 생성한다. 브라우저 위에서 작동을 하기 서버 템플릿이 제어할 수가 없다. 💡 SPA (Single Page Application) 서버로부터 완전한 새로운 페이지를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션이나 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dIVMPn/btrfuOsaIpO/pKhqLE27VhIkHsHhk59cV1/img.png)
import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @RunWith(SpringRunner.class) @SpringBoo..
// 라이브러리들을 받아올 원격 저장소 결정 dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.projectlombok:lombok') compile('org.springframework.boot:spring-boot-starter-data-jpa') // 추가 compile('com.h2database:h2') // 추가 testCompile('org.springframework.boot:spring-boot-starter-test') } build.gradle의 dependencies에 위에 주석으로 표시한 부분( // 추가 )을 추가하였다. spring-boot-starter-data-jpa ..
패러다임 불일치 문제 관계형 데이터베이스: 어떻게 데이터를 저장할지에 초점 객체지향 프로그래밍 언어: 기능과 속성을 한곳에서 관리 관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임이 서로 다르기 때문에, 객체를 데이터베이스에 저장할 때 문제가 발생 ORM 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법 JPA 자바 표준 ORM 인터페이스로서 자바 표준 명세서 객체지향 프로그래밍언어와 관계형 데이터베이스의 중간에서 패러다임을 일치시켜 줌 개발자가 객체지향적으로 프로그래밍하면 JPA가 관계형 데이터베이스에 맞춰서 SQL을 대신 생성해서 실행 SQL에 종속적인 개발을 하지 않을 수 있음 객체 중심의 개발을 하게 되었을 때 장점 유지보수성 향상 생산성 향상 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lCdKz/btre5PxAwkR/fT9Efzt40c5xrSSCq6MzkK/img.png)
Lombok은 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해 준다. 1. IntelliJ Plugins에서 Lombok을 설치한다 (shift + command + A) 2. build.gradle의 dependencies에 lombok을 추가해준다. dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') compile('org.projectlombok:lombok') // 추가 } 위에 처럼 추가를 해준다 오른쪽의 gradle 메뉴에서 새로고침을 한다 3. Enable..
책에서 사용한 코드를 사용했는데 테스트를 실패해서 보았더니 gradle의 버전 문제였다. 그래서 책에서 요구했던 버전대로 변경을 하였다. 여기를 참고하였다. $ gradlew wrapper --gradle-version 4.10.2 zsh: command not found: gradlew gradlew wrapper --gradle-version 버전 이렇게 입력을 하였는데 command not found가 나왔다. 이를 해결하기 위해서는 chmod 명령어를 사용해야 한다. chmod 777 gradlew chmod +x ./gradlew 위의 둘 중에 하나를 사용하면 된다. ./gradlew wrapper --gradle-version 4.10.2 혹은 단순이 gradlew이 아닌 ./gradlew라고..
- Total
- Today
- Yesterday
- mysql
- graphql
- Squash and merge
- string
- downTo
- 1차 인터뷰
- python3
- 주생성자
- pm.expect
- github
- 2차 인터뷰
- Python
- solidity
- postman collection
- go 특징
- 코틀린
- java
- 코딩테스트
- 네이버 2022 공채
- squash merge
- Kotlin
- Kotlin In Action
- hashcode
- 확장 함수
- git
- pm.test
- DGS Framework
- postman tests
- Basic Type
- postman
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |