전체 글
-
TIL 50th dayTIL(Today I Learned) 2021. 12. 11. 17:42
@Transactionnal Test 케이스에 존재하면 테스트가 끝난 후에 롤백을 해서 DB에 남기지 않는다. 반복적인 테스트를 위해 @Rollback(false) transactional에 의해 롤백되는것을 막아주는 어노테이션 저장이 잘되는지 확인하는 목적 PersistenceContext 실제로는 DB에 저장하는것이 아니라 영속성Context를 통해서 Entity를 영속화한다는 의미이다. 따라서, 영속성컨텍스트를 통해 만들어진 데이터는 save한 데이터와 같게된다. 예) 아래 코드 자세한건 추후에 다루도록 한다. // JpashopApplicationTests assertThat(findMember).isEqualTo(member); // 결과 true springboot 라이브러리 세팅 스프링부트가..
-
HashMap(프로그래머스 전화번호 목록)자료구조 2021. 12. 10. 20:14
프로그래머스 전화번호 목록 length, length(), size() length = 배열의 길이 length() = 문자열의 길이 size() = 컬렉션프레임워크의 길이 리스트 또는 Array 등 컬렉션 안에 들어있는 원소의 갯수(?) import java.util.HashMap; class Solution { public boolean solution(String[] phone_book) { //hashMap 생성 HashMap map = new HashMap(); for(int i = 0; i
-
TIL 49th dayTIL(Today I Learned) 2021. 12. 10. 12:23
HikariCP 데이터베이스와 커넥션풀을 관리해주는 기능 커넥션 풀 커넥션풀은 미래에 데이터베이스 요청이 왔을 때 더 좋은 성능으로 이용할 수 있도록 캐시를 유지관리해주는것을 의미 thymeleaf nature templates 마크업언어의 변경 최소화, 웹 브라우저에서 확인 가능 @Controller 스프링 MVC 컨트롤러로 인식 MVC에서 C를 담당 역할을 분담하므로써 대규모 프로젝트의 비용절약, 유지보수 비용 절약 등이 가능 사용자의 요청이 진입하는 지점 단지 요청만 받고 실질적인 서비스는 서비스(Layerd Architecture)에서 담당 사용자에게 View를 응답으로 보내줌. Model Model을 통해 데이터를 실어서 View에 넘길 수 있다. Model.addAttribute 스프링 부트 ..
-
TIL 47th dayTIL(Today I Learned) 2021. 12. 8. 22:20
리터럴 대체 - |...| 타임리프에서 문자와 표현식 등은 분리되어 있기 때문에 더해서 사용해야한다. 따라서 |...|를 사용하면 더하기 없이 편리하게 사용할 수 있다. 변수 표현식 - ${..} 모델에 포함된 값이나, 타임리프 변수로 선언한 값을 조회할 수 있다. 프로퍼티 접근법을 사용한다. item.getPrice() 내용 변경 - th:text 내용의 값을 th:text의 값으로 변경한다. 10000* 여기서는 10000을 item.price 값으로 변경한다. URL 링크 표현식 - @{...} th:href="@{/basic/items/{itemId}(itemId=${item.id})}" item.id값은 itemId에 넣어서 최종적으로 {itemId}에 넣어준다 URL 링크 표현식을 사용하면 경..
-
TIL 46th dayTIL(Today I Learned) 2021. 12. 7. 14:20
공개 HTML /resources/static 폴더에 HTML을 넣어두면, 실제 서비스에서도 공개된다. 서비스를 운영한다면 지금처럼 공개할 필요없는 HTML을 두는 것은 주의하자 부트스트랩 HTML을 편리하게 개발하도록 도와줌 intellij에서 부트스트랩이 적용이 안될 시 out 폴더를 삭제하고 어플리케이션을 재시작하면된다. thymeleaf |입력| -> || 안에 문자를 입력하면 조합을 전부 합쳐주는 기능을 한다. @{주소} -> 타임 리프 경로 설정 th:each를 이용해서 loop를 순회한 만큼 변수에 넣어줄 수 있다. ex) th:each="item : ${items}" //모델에 있는 items만큼 루프를 돌아서 item 변수에 집어 넣는다. th:text=""를 이용해서 text 출력 @P..
-
HTTP 헤더2 - 캐시와 조건부 요청HTTP 2021. 12. 7. 00:20
캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야한다. 인터넷 네트워크는 매우 느리고 비싸다 브라우저 로딩 속도가 느리다.(느린 사용자 경험) 캐시 적용 cache-control: max-age =60 //캐시 지속시간(?) 60초로 설정 캐시 덕분에 캐시 가능 시간 동안 네트워크를 사용하지 않아도 된다. 비싼 네트워크 사용량을 줄일 수 있다. 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경험 캐시 시간 초과 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다. 이때 다시 네트워크 다운로드가 발생한다.(불필요한 손실) 캐시 시간 초과(해결방안) 검증헤더(Last-Modified)와 조건부(if-Modified-since) 요청 서버 데이터를 변경하지 않았을 경..
-
TIL 45th dayTIL(Today I Learned) 2021. 12. 6. 18:19
스프링 부트 정적 리소스 src/main/resources 경로 아래에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다. 따라서, 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스를 제공한다. 뷰 템플릿 동적인 HTML을 만들때 사용한다.(thymeleaf) 컨트롤러를 통해 호출한다. th:text="${data}" 와 같은 태그를 이용해서 동적으로 변하는 html을 생성할 수 있다. @Controller @Controller이면서 String으로 반환하는 메서드는 return 값이 논리뷰로 반환된다. void를 반환하는 경우 @Controller를 사용하고..