목록분류 전체보기 (52)
seok의 패치노트

JPA뿐 아니라 ORM은 어느 특정 데이터베이스에 종속적이지 않다. ORACLE , MySQL , MS-SQL 등 여러가지 RDB가 있을때 각각의 문법이 차이가 있기에 SQL 중심적 개발로 진행 시 RDB 변경이 정말 어려웠다.(정확하게는 그래본적이 없지만 변경한다 하면 정말 어마어마한 리소스가 투입되야 할 것이다.) 하지마 JPA는 SQL 중심적 개발방식이 아니라 객체 관점에서 개발하는 방식이기에 어느 특정 SQL에 종속적이면 안된다. 이걸 해결하기 위해 나온 "Dialect(방언)" 이다. 데이터베이스 방언 방언이란건 원래 어느지역의 언어체계를 뜻하는데 데이터베이스의 방언은 그 데이터베이스만의 특정문법을 뜻한다!! 예를들어 페이징만 생각해봐도 MySQL은 LIMIT , ORACLE ROWNUM 이다...
무언가 개발을 하려고 열심히 만들고 보면 DB에 접근해서 데이터를 저장을 하던 조회를 하던 수정,삭제를 하던간에 SQL이 필수적으로 들어 가야한다. SQL 쿼리를 개발자가 하는게 나쁘다는건 저~~얼~~때 아니다 개발자가 쿼리를 알아야 DB를 사용할 것 아닌가 ~? 다만..... 유저에 대한 기능을 위한 CRUD 상품을 위한 CRUD 상품 상세를 위한 CRUD... JPA를 사용하기전에 이러한 의문점을 한번 가져보자 왜 계속해서 반복적인 CRUD가 들어가야할까 ~? 그렇다면 계속해서 새로운 기능이 추가될 때 마다 지루한 CRUD 작업을 추가해야 하는건가 ?? 여태 내가 개발해왔던 방식은 "SQL 중심적 개발" 이였다. 이러한 SQL 중심적 개발 방식을 사용하다보면 개발자는 어느덧 SQL 매퍼 역활을 하고있..

MockMvc 란? Controller를 호출해주는 도구로써 Junit 테스트 시 필요로 한다 만약 MockMvc 유틸리티 클래스를 사용하지 않는다면 Postman이나 직접 웹브라우저에서 테스트를 하며 디버깅을 해야 하지만 MockMvc를 사용하면 쉽게 테스트를 할 수 있다. MockMvc 테스트 방법 @WebMvcTest만 사용하는 방법이 있고 @SpringBootTest과 같이 사용하는 방식이 있다 @SpringBootTest를 사용하게 되면 ApplicationContext 전체를 불러오기에 Bean으로 등록된 모든 객체를 메모리에 미리 올려두고 테스트할 수 있다 만약 Bean을 미리 등록할 필요 없다면 @WebMvcTest 만 사용하면 되고 아니라면 @SpringBootTest와 @AutoConf..

요즘은 클라우드 없이는 서비스가 안돌아갈 정도로 클라우드의 인기가 엄청나다 대표적인 클라우드 서비스 제공기업은 Amazon , Microsoft , Google , Alibaba , IBM 등이 있다 ! 필자는 공부삼아 Amazon 서비스 만을 사용해본 경험을 가지고 있고 현재 GCP를 이용한 서비스를 회사에서 익혀보고 있다!! 그러던중 클라우드 서비스 제공형태에 대해 알게되어 이렇게 정리해본다 ! 위에 이미지를 보면 왼쪽에 On-premises 라는 영역이 있다 해당 영역은 클라우드 서비스 제공형태가 아닌 스스로 다 관리해야 하는 영역을 의미한다. 보통 집에 개인적인 서버를 구성하거나 전산실에 자체 서버를 구성할 때 생각해야 할 부분들이 상당히 많다 하드웨어를 구매 해야하고 또 네트워크를 구성해야 하며..
redis hash - 레디스에서 hash는 하나의 객체에 여러 필드를 저장하는 것 과 동일하다고 보면된다!! ex)human.name , human.age .... hset key명 필드명 값 - 해당 key에 해당하는 해시 필드를 설정한다. - ex) hset student name seok --> student 키에 저장된 해시에 name 필드를 설정한다. hget key명 필드명 - 해당 key에 해당하는 해시 필드에 설정된 값을 가져온다. - ex) hget student name hmset key명 필드명 value 필드명 value.. - 해당 key에 해당하는 해시 필드 여러개를 정의한다. - ex) hmset student name seok age 10 ... hmget key명 필드 필..
sudo apt-get update - sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | s..
ltrim key start stop -> 리스트의 요소중 인덱스가 start ~ stop 사이에 있는것들은 빼고 나머지는 지운다. lset key index 바꿀값 -> 해당 index에 해당하는 요소를 다른값으로 바꾼다 lindex key index -> 해당 인덱스에 해당하는 요소를 반환함 linsert key before 또는 after 특정요소 value -> before는 특정요소 앞에 value를 추가한다. after는 특정요소 뒤에 value를 추가한다. llen key -> 해당 키에 해당하는 리스트목록 개수를 반환 lrem key count value -> count 가 양수이면 지정한 value를 리스트의 왼쪽에서부터 count tnakszma tkrwpgka -> count가 음수이..
lpush key value value... -> 가장 마지막에 push된 요소가 가장 처음위치로 들어가게된다, -> 나열해둔 value 들 중에 맨 마지막에 나열된걸 수록 리스트에 맨처음에 담기게됨 rpush key value value... -> 가장 마지막에 push된 요소가 가장 마지막 위치로 들어가게된다, lpushx key value -> key가 존재해야하며 없을경우 동작하지 않음 , 요소를 가장 왼쪽에 넣겠다 rpushx key value -> key가 존재해야하며 없을경우 동작하지 않음 , 요소를 가장 오른쪽에 넣겠다 lpop key -> 리스트에서 가장 왼쪽에 있는걸 꺼냄(제거) rpop key -> 리스트에서 가장 오른쪽에 있는걸 꺼냄(제거) ltrim key명 start stop -..