목록전체 글 (53)
seok의 패치노트
Spring boot 환경에서 build 자동화 도구로 Ant, Maven, Gradle 이 존재 합니다3가지 빌드 도구중 Gradle 에 대해 설명하려고 합니다. 스프링 부트 프로젝트를 시작하면 거의 당연하듯 Gradle 혹은 Maven을 만나게 됩니다그런데 막상 프로젝트를 처음 만들 때는 IDE가 자동으로 설정해주기 때문에, 크게 신경 안쓰는 개발자들도 많습니다.그러다가 나중에 “그래서 Gradle이 정확히 뭐 하는 도구인데?” 라는 질문에는 막연하게 답하는 경우가 많습니다.이번 글에서는 Gradle이 무엇인지, 왜 사용하는지, 그리고 스프링/자바 프로젝트에서 어떤 역할을 하는지를 정리해보겠습니다.Gradle을 단순히 “의존성 받는 도구” 정도로만 알고 있었다면, 이번 글이 개념을 제대로 잡는 데 도..
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가 음수이..