일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 삼성 #코테 #2020상반기 #c++
- 중반부
- Smilegate
- Algorithm
- 백준
- Union-find
- 스마일게이트
- 카카오
- BaekJoon
- 보석쇼핑
- 서버개발캠프
- LIS #Algorithm #요소추적
- 코딩테스트
- 카카오인턴
- 1편
- 유니온파인드
- c++
- 투포인터
- 식단
- 알고리즘
- 코테
- 소감
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- BFS
- Today
- Total
목록개발 프로젝트 정리 (19)
짱아의 개발 기록장
서버 템플릿 엔지과 머스테치 소개 템플릿 엔진 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐저 html 문서를 출력하는 소프트웨어를 의미한다. 아래의 코드르 보자. 1 2 3 4 5 6 7 8 9 $(document).ready(function(){ if(a=="1"){ } }); cs 서버 템플릿 엔진 종류 - JSP, Freemarker 역할 - 서버 템플릿 엔진은 서버에서 구동된다. 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java코드로 문자열을 만든뒤, 이 문자열을 html로 변환하여 브라우저로 전달한다. 즉, 브라우저에서는 화면에 띄우기만 하면 된다. 클라이언트 템플릿 엔진 종류 - React, Vue 역할 - 반면, 자바스크립트는 브라우저 위에서 작동한다. 앞에서 작성된 자바 스..
코드에 별도로 데이터베이스에 update 하는 쿼리가 어디에도 없음에도 불구하고 update쿼리가 실행되는 것을 말한다. JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영해준다. 이때, 변화가 있다는 것의 기준은 최초의 조회 상태이다. JPA에서는 엔티티를 조회하면 해당 엔티티의 조회 상태를 그대로 스냅샷으로 만들어놓는다. 그리고 트랜잭션이 끝나는 지점에서 기존에 떠놓았던 스냅샷과 비교해서 다른 점이 있다면 Update Query를 데이터베이스로 전달한다. ++ 추후 추가예정
JPA는 Spring boot에서 사용하는 ORM이다. JPA는 인터페이스이기 때문에 구현체가 필요한데, 여러 가지의 구현체가 존재한다. [JPA의 구현체] Spring Data Jpa -> Hibernate, Eclipse Link보다 한 단계 더 추상화한 개념 Hibernate, Eclipse Link -> JPA의 구현체 JPA
JPA를 사용하게 된 이유? SQL 단순 반복 작업으로 인한 업무 효율성 악화 패러다임 불일치 패러다임 불일치 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술, but, 객체지향 프로그래밍은 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술,,, 관계형 데이터베이스로 객체지향을 표현할 수 있을까??? => 패러다임 불일치.... 이렇게 서로 지향하는 바가 다른 2객의 영역(객체지향 프로그래밍 언어 / 관계형 데이터베이스)을 중간에서 패러다임 일치를 시켜주기 위한 기술이 ====> "JPA"이다. 즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행해준다. 개발자는 항상 객체 지향적으로 코드를 표현할 수 있으니 더는..
테스트 코드 소개하기 많은 IT회사에서 실제로 사용하는 TDD(Test Driven Development, 테스트 주도 개발)에 관련해서, TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 법을 배우는 Chatper입니다. 즉, 테스트 코드 작성의 기본을 배워봅니다. 일단, 테스트 코드를 작성하면 좋은 점에 대해 정리해봅시다. 일반적으로 테스트 코드를 작성하지 않고 개발을 하게 되면 다음과 같은 과정을 거치게 됩니다. 코드 작성 프로그램(Tomcat) 실행 Postman과 같은 API 테스트 도구로 HTTP요청을 하고 요청 결과를 System.out.println()으로 눈으로 검증합니다. 결과가 다르면 다시 프로그램(Tomcat)을 중단시키고 코드를 수정합니다. 첫 번째, 위와 같이 Tomc..
이 책의 예제는 기본적으로 다음과 같은 환경에서 실행됩니다. - Java 8(JDK 1.8) - Gradle 4.8~Gradle 4.10.2 그리고 IntelliJ는 얼티메이트(유료) 버전이 아닌 커뮤니티(무료) 버전으로 진행합니다. 1. 인텔리제이를 설치하고 Gradle로 프로젝트를 선택합니다. 2. build.gradle 파일에서 기존의 내용을 아래와 같이 수정합니다. 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 29 30 31 32 buildscript { ext { springBootVersion = '2.1.7.RELEASE' } repositories { mavenCentral() jcenter() } d..
@LogExecutionTime을 만들어주고 LogAspect.java를 만들어서 LogExecutionTime 어노테이션 주변에 어떤 동작들이 일어나는 지를 구현했다. (LogExecutionTime 어노테이션이 붙으면 stopwatch를 통해 시간을 재게 된다.) 이것이 바로 Spring에서 해주는 AOP작업이다. /owners/find 로 들어가게 되면 @LogExecutionTime이 붙었기 때문에 저절로 시간을 잰다. . . . 또한, Spring에서 AOP를 적용하는 방법은 @Around외에도 굉장히 많다. @Before, @After 등등!
기존 코드 건드리지 않고 새 기능 추가하기 (실습을 통해 진행했다.) 1. 첫 번째 실습 CashPerf가 프록시의 역할을 한다. + Store라는 클라이언트 side에서 CashPerf를 사용했기 때문에 성능 측정이 가능하다. (만약, Store에서 Store strore = new Store(Cash())를 했다면.... 성능측정은 불가능하다.) 새로운 코드인 CashPer.java를 추가하긴 했지만 기존의 코드를 건들이지 않고 새로운 기능(성능측정)을 추가했다. 이런 일들이 Spring AOP에서는 대부분 자동으로 이루어진다. 굉장히 복잡한 내부적인 로직으로 돌아간다. 따라서, Spring에서는 우리가 비즈니스 로직 개발에만 집중을 할 수 있게끔 이러한 복잡한 작업들을 대신 해준다.