분류 전체보기 17

노드 스터디 2. 모듈과 ES모듈

스프링부트 공부하다가 노드 공부하려니 재밌다..ㅜ 확실히 나는 자바기반보다는 자스기반이 더 맞는 거 같다.. 아무튼 오늘도 킵고잉~! 1. module과 require, exports node에서의 모듈이란 어플리케이션을 구성하는 개별적 요소이다. 독립된 기능을 갖는 함수나 파일들의 모임이다. 이 말은 기능별로 나누어서 필요할 때 호출해서 쓸 수 있다는 얘기이다. module.exports를 이용하여 보낼 수 있고, require를 통하여 다른 파일에서 호출할 수도 있다. (나는 html에서의 import와 비슷하다고 생각한다.) require를 사용하다 보면 처음 호출할 때는 하드디스크에서 꺼내와서 메모리로 옮기는 캐싱기능을 하지만 한번 이상 호출 시에는 바로 메모리에서 가져올 수 있다. 그리고 exp..

Backend/Node.js 2024.04.01

노드 스터디 1. node란?

드디어 노드 공부를 시작했다! 인터뷰를 하다 보면 종종 가장 좋아하는 언어가 뭐냐고 묻는데 그럴 때마다 나는 자바스크립트라고 말한다! 스크립트언어가 더 어렵지 않냐 그러는데... 전혀요 (다 똑같이 어려움 ㅎㅎ) 이러한 자바스크립트로 만든 백앤드가 있는데 안배울이유가 없다! why not~~? 그리고 vue, react 등의 언어의 백단을 보면 요새는 거의 다 노드인 거 같다! (나만 모를순 없지!!) 오늘도 새로운 공부 keep going~ 1. node란? node를 대부분의 사람들은 javascript로 만든 서버라고 말하고 나 또한 그렇게 생각했다! 공부하다 보니 node는 정확하게 말하자만 런타임(=실행환경)이다. 그러한 node를 가지고 서버로 만들 수 있기 때문에 대부분의 사람들은 서버라고 ..

Backend/Node.js 2024.03.29

스프링부트 입문 12. 프로퍼티 암호화, 캐시

후후후 부트 공부는 이제 좀 마무리해야겠다! 고생했다~~ 당분간 다른 공부하다가 다시 디벨롭해야지 1. 프로퍼티 암호화 Jasypt는 프로젝트에 암호화 기능을 추가할 수 있는 라이브러리이다. 단방향, 양방향 암호화 기술을 제공하고, 스레드에 상관없이 안전하다. properties 등의 파일에 적용할 수 있고, key 등을 암호화하여 조금 더 안전하게 관리 할 수 있는 라이브러리이다. 2. 캐시 스프링부트에서의 캐시는 JSR-107(자바 플랫폼에 대한 규격을 기술)을 따른다. JSR-107을 사용하면 어떤 구현체 캐시를 사용하는지에 관계없이 추상화를 지원한다. 캐시는 크게 로컬과 글로벌로 구분할 수 있다. 로컬 캐시 : 해당 서버에서만 사용하는 캐시이며 외부서버와 트랜잭션 비용이 들지 않기 때문에 속도가 ..

Backend/SpringBoot 2024.03.26

스프링부트 입문 11. 쿼리 어노테이션

죽지도 않고 다시 돌아온 부트 공부,,, 언능 끝내보자고 가보자고 1. Query Annotation 쿼리메소드를 통한 쿼리를 사용하다 보면 조건이 많아지거나 메소드의 이름이 길어져서 가독성이 떨어지는 경우가 많다. 이러한 경우 쿼리어노테이션을 이용하여 쿼리를 작성할 수 있다. JPA에서 제공하는 기능으로 JPQL을 사영하여 쿼리를 작성하는 방법이고, 엔티티 객체를 대상으로 쿼리를 수행한다. 1. 직접 쿼리 사용 방법 @Query("쿼리 구문") 2. DB의 Native Query를 사용하는 방법 @Query(value="쿼리 구문", nativeQuery=ture) 3. 파라미터 주입 방법 ex. @Query("SELECT p FROM Product p WHERE p.price > ?1") List f..

Backend/SpringBoot 2024.03.19

스프링부트 입문 10. 쿼리 메소드

굉장히 귀찮지만.. 오늘도 해야만 한다... No shibal keep going... 1. JPQL 테이블이 아닌 엔티티 객체를 대상으로 사용되는 객체지향 쿼리이다. 2. 쿼리메소드 이전에 JPA를 공부하다 보면 기본으로 제공되는 메소드 말고는 사용할 수 없나 하고 궁금증이 생겼었다. 역시나.. 있었다. Repository 내 정의되는 메소드의 이름만으로 쿼리를 생성할 수 있고, 규칙에 맞게 이름을 지으면 그에 맞는 쿼리가 자동으로 생성된다. 크게 주제와 서술어로 구분되며 find, exists 등으로 시작되면 by뒤에는 서술어(검색이나 정렬조건)가 붙는다. 1. find...by, read...by, get...by, query...by : 조회하는 키워드이며, 리턴타입을 설정할 수 있다. ('.....

Backend/SpringBoot 2024.03.17

스프링부트 입문 9. JPA 부가기능(with Auditing, MappedSuperclass)

개인적인 일상(무릎부상)으로 인해 블록이 잠깐 딜레이 됐다.. 다시 열심히 기록해야지~~ 그나저나 날이 풀려서 너무 졸리긴 하네... 오늘은 JPA에 부가적인 기능들에 대해 공부를 해봤다! 1. JPA Auditing 각 엔티티 별로 누가, 언제 접근했는지 기록하여 감시 체계를 구리는 것을 의미한다. 대부분의 테이블의 컬럼에는 생성일, 생성자, 수정일, 수정자 등의 컬럼들이 존재한다. (필요 없어 보이는 컬럼 같아 보이지만 유지보수측면에서는 꼭 필요한 컬럼이다.) 이러한 반복적인 컬럼을 공통적으로 처리해 주는 기능이 JPA에는 존재한다. @CreatedDate, @CreatedBy, @LastModifiedDate, @LastModifiedBy 등의 어노테이션으로 자동으로 값을 저장한다. (위와 같은 기..

Backend/SpringBoot 2024.03.15

의존성 주입(Dependency Injection, DI) 알아보기

스프링 공부를 처음시작하면 스프링의 특징에 대해 공부를 제일 먼저 할 것이다! 나 역시 스프링을 처음 접하면서 크게 4가지 특징을 달달달 외웠다 ^^ 1. 경량 컨테이너 2. 제어 역행 3. 의존성 주입 4. 관점지향 프로그래밍 단순히 코드 몇 줄만 외우고 제대로 이해를 못 한 탓에 아직도 어디선가 설명해 달라고 하면 설명을 못하고 이러한 원칙들이 적용이 된 건지 쉽게 알아보기 어렵다... 이게 바로 가짜 개발자가 아닌가 하고.. 다시 공부하려 한다! 개발 공부는 끝이 없다고 하던데 3년 차가 되어서 느끼고 있다 (= 2년은 놀았다는 소리) 일단! 여기서 가장 이해가 안 되는 의존성 주입과 제어의 역행에 대해 서술하듯이 적어보겠다. 일단 제어의 역전에서의 제어의 의미는 '관리'이고 역전의 의미는 '외부에..

Etc/CS 2024.03.11

스프링부트 입문 8. 테스트커버리지

최근 면접을 좀 보다 보니 부족함을 좀 뼈저리게 느끼는 중이다! 일단 부트 공부를 좀 끝내고 다시 cs공부를 시작해야 할 거 같다~~ 암튼 공부 다시 레쓰고~ 1. 코드 커버리지 소프트웨어의 테스트 수준이 충분한지 표현할 수 있는 지표 중 하나이며 테스트를 진행했을 때 해당 코드가 실행되었는지를 표현하는 방법이다. 많은 코드 커버리지 도구가 있으며, 가장 보편적으로 사용되는 것이 jacoco이다. 2. Jacoco 자바 코드 커버리지를 체크하는 라이브러리이다. 작성된 코드의 테스트 커버리지를 측정하는 도구이며 런타임으로 테스트 케이스를 실행하여 커버리지를 체크하는 방식으로 사용된다. 테스트를 실행하고 난 후의 결과는 html, xml, csv 등의 형태로 report를 제공한다. Jacoco에는 Rule..

Backend/SpringBoot 2024.03.11

스프링부트 입문 7. 테스트코드

오늘도 귀찮음을 이겨내고 포스팅 갈긴다... 진짜 개발자 아무나 못해.. 나 그냥 회사 다닐래. 1. 단위테스트 단위 테스트는 프로젝트에 필요한 모든 기능에 대한 테스트를 각각 진행하는 것을 의미하고 F.I.R.S.T원칙을 기본으로 한다. Fast : 테스트 코드의 실행은 빠르게 진행되어야 함 Independent : 독립적인 테스트가 가능해야 함 Repeatable : 테스트는 매번 같은 결과를 만들어야 함 Self-Validating : 테스트는 그 자체로 실행하여 결과를 확인할 수 있어야 함 Timely : 단위 테스트는 비즈니스 코드가 완성되기 전에 구성하고 테스트가 가능해야 2. JUnit 자바 단위테스트를 위한 테스팅 프레임워크이다. @SpringBootTest / @ExtendWith / @..

Backend/SpringBoot 2024.03.05

스프링부트 입문 6. JPA

월요일은 졸리다... 월요일은 웜업 하는 날이라 생각하고 할 수 있는데 까지만 해야지 3월도 파이팅~~ 1. ORM & JPA 어플리케이션의 객체와 관계형 데이터베이의 데이터를 자동으로 매핑해 주는 것을 의미한다. 객체지향 프로그래과 관계형 데이터베이스의 차이로 발생하는 제약사항을 해결해 주는 역할을 수행한다. 대표적으로 ORM과 관련된 인터페이스의 모임인 JPA가 있다. 직관적인 코드로 데이터를 조작할 수 있고 , 재사용 및 유지보수가 편리하고 , DBMS에 대한 종속성이 줄어든다는 장점이 있다. 그러나 복합성이 커져 ORM만으로만 구현하기 어려울 수 있고 , 잘못 구현할 경우 속도를 저하시킨다는 단점이 있다. 2. Validation 기존 유효성 검사는 전체적으로 코드가 분산되어 있었다. 그래서 정해..

Backend/SpringBoot 2024.03.04