Backend/SpringBoot 13

스프링부트 입문 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

스프링부트 입문 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

스프링부트 입문 5. 서비스 구조

새로 공부하다 보니 제일 헷갈리는 건 dao, dto, vo, entity, repository 등의 데이터 관련 객체들이다. 예전에 스프링 공부할 때는 dto(=vo)만 주로 사용했었는데 무슨 개념들이 이렇게 많아진 건지.. 서비스 구조를 정리하면서 한 번 더 정리해봐야겠다 일단 스프링부트의 서비스 구조를 크게 보자면! Client(front) -> Controller -> Service&ServiceImpl -> Dao(Repository)&DaoImpl -> DB 이러한 구조이다! 크게 client에서 controller를 거쳐 service까지 전달되는 데이터 객체는 dto이며 sercvice에서 dao, db까지 전달되는 객체는 entity라고 보면 된다. dto는 vo라고 불리기도 하며, 계층..

Backend/SpringBoot 2024.03.02

스프링부트 입문 4. controller의 어노테이션

백앤드를 공부하면서 controller단 위주로 공부하였고, 이전과 달라진 부분 위주로 기록하였다. 몇 년 사이에 바뀐 게 얼마나 많은지... 왜 개발자는 계속 공부해야 하는지 뼈저리게 느끼고 있다. 무튼 출발~~! 1. @RestController spring framework 4 버전부터 사용가능한 어노테이션이다. @Controller와 @ResponseBody가 결합된 어노테이션 2. @RequestMapping url을 매핑하여 경로를 설정하여 해당 메소드에서 처리하는 어노테이션이다. 여기서 value와 method를 지정해야 하는 이전 방식과는 다르게 4.3 버전부터는 @GetMapping / @Post Mapping / @Delete Mapping / @PutMapping / @PatchMap..

Backend/SpringBoot 2024.03.01

스프링부트 입문 3. 추가 설정들

어쩌다 보니 JPA 위주의 스터디가 되고 있지만 2년 전에 JPA만 해도 신기술 같은 느낌이라 굳이 내가 이거까지 해야 하나 했는데,, (프론트만 할 생각이었다..) 이젠 필수인 거 같다 ^^; 무튼 코딩도 스타일과 변화가 있으니 나도 알아야겠다.. 오늘도 가보자고 1. DB 접속 설정하기(H2) application.properties를 이용하여 db연결을 해주자! 프로젝트 생성할 때 나는 dependencies에 H2 database를 추가하였다. spring.h2.console.enable=true라는 속성을 추가하여 db 접속을 설정하였다. 간단하게 DB까지 연동해서 스터디할 때는 H2가 확실히 편한 거 같다. DB 확인할 때는 :8080/h2-console url로 확인가능하다. connect시..

Backend/SpringBoot 2024.02.29