반응형

spring 24

태태개발일지(index)

@Entity @Table(name = "user_table", indexes = { @Index(name = "idx_name", columnList = "name") }) //@Table(name = "user_table") 데이터베이스에서 index를 만들면 B+ Tree 구조로 저장이되고, 인덱스테이블을 사용하면 insert, update,delete가 있어서 추가 쿼리가 생기지 않는 이상, 조회상태에서는 성능이 향상 된다고 알 게 되었다. 또 궁금한 것은 못참는 내가 Database에서 userTable을 만들고 안에 name이라는 속성으로 index를 만들고, spring과 연결 시켜서 Jmeter로 성능을 실험해보았다. 결과: 유저 데이터 30000개 정도는 속도차이가 별로 크게 나지않는다...

DATABASE 2023.09.24

태태개발일지(JPA)

JPA?(java persistance api) jap -hibernate -eclipse LInk Spring Data jpa? - hibernate를 조금 더 간편하게 사용하기 위해서 추상화를 한번더 한 것. Spring Flow aplication 과 RDB를 연결해주는 것을 ORM개념이라고 한다. Java에서는 ORM표준을 JPA라는 것을 interface로 정의하여 제공하고있는데 자주쓰는 hibernate를 한번더 추상화시킨것이 Spring data jpa이다. (가장중요한 ENTITY의 기본 속성) @Entity -> 해당 클래스가 데이터베이스의 기본이 되는 엔티티임을 선언. @Table -> class네임과 다르게 실제 데이터베이스 테이블 이름을 지정해준다. + ,indexes = {@Ind..

Spring/JPA 2023.08.10

태태의 개발일지

#Radis #data #cache Redis란???        1. 왜 redis를 공부하게 되었는가?     spring project가 끝나고 전반적인 spring boot의 기능들과, 흐름은 인지했지만, 여러 사람들이 사용하는 서비스가 된다면, 데이터 트       레픽과, 트랜젝션등 데이터의 flow가 중요할 것 이라고 생각이 들었다. 그렇기에 kafka, redis, nosql 등을 공부해보려고 한다.      2. Redis의 정의     Remote Dictionary Server의 약자이다.      Storage의 개념이다. 즉 저장소의 개념이다. -> 외부 저장서로써 데이터가 남게 된다.     DB -> nosql과 비슷한 역할을 제공한다.       3. Redis로 할 수 있는..

Spring/Redis 2023.08.02

Main Project(money mad)

기대하고 고대하던 main project가 끝났다. 우리의 도메인은 금융이였고, 처음부터 느낀점과 보완해야할 점 느낀점을 알려주겠다. 1. 도메인을 금융으로 잡은 이유   도메인을 금융으로 잡은 이유는 실제 결제 시스템API가 궁금했었고, 금융을 선택하게되면 보완과 실제 계좌연동등 여러가지를 체험해보고 배울 수 있을 것이라고 생각했다. 2. 도메인에서 아쉬웠던점.   실제 결제나 계좌연동이 아니더라도 연동하는 시뮬레이션을 할 수 있는 API가 있을 줄 알았는데 보완때문에 아예 그런 부분들이 안되었고, 그런 부분에 있어서 Mock 데이터를 사용할 수 밖에 없던 부분이 너무 아쉬웠다.  3. 서비스 설명.   우리 서비스는 자산 관리시스템으로 회원가입, 로그인을 하면 개인 자산을 모두 연동하여 총 자산을 확..

52일차 회고

이제 스프링 시큐어리티 작동 원리에 대해서 좀 알아보겠다. 일단 우선 사용자---> 리소스요청---> 크리덴셜요구---> 사용자 크리덴셜 확인--->없을시(예외),있으면 ---> 인가확인(권한)---> 확인되면 리소스 OK 아니면 (예외) 서블릿 기반 어플리케이션일 경우, 애플리케이션의 앤드포인트에 요청이 도달하기 전에 중간에 요청을 가로챈 후 어떤 처리를 할 수 있는 포인트를 제공하는데 그것이 서블릿 필터입이다.즉 서블릿 필터는 하나 이상의 필터들을 연결해 필터 체인(Filter Chain)을 구성할 수 있다.Spring Security도 마찬가지로 서블릿 필터를 사용하고, DelegatingFilterProxy가  서블릿 컨테이너 영역의 필터와 ApplicationContext에 Bean으로 등록된 ..

40 회고

오늘은 spring project 배포에 대해서 정리해 보겠다.intelij IDE를 통해서 빌드하는 방법은 우측에 있는 Gradle버튼을 통해서 bootjar or build를 누르면 jar파일로 압축이 되게된다. bootjar은 실행 가능한 Jar만 만들고 build는 거의 모든 task를 실행 시킨다고 보면된다.boojar 실행가능한 jarbuild빌드와 관련된 모든 task를 실행이제 이렇게 만든 jar는 폴더하위에 있는 build 폴더안에 있는 lib로 경로를 맞추고 java -jar ~~~.jar을 통해 실행 시킬 수 있다. 여기서는 profile 개념이있는데 , 서버와 로컬 등 여러가지 상황에 따라서 다른 환경을 사용할 수 있는데 이것을 profile로 정할 수 있다. application...

37(테스팅과 API document작성)

또 google로 들어갔을 때 Tistory not found가 뜬다  그래서 bing으로 들어기 글을 쓰게 되었다 ,,,앞서서 단위테스팅과, 기본 @Springboottest를 통하여 간단한 API계층 테스트를 알아 보았다, 이제는 Mockito를 사용하여 가짜 Mock을 통해서 가짜 의존성을 주입해 주는 것을 통한 테스팅을 해볼 것 이고, 이를 통해서  API document까지 한번에 작성하는 spring restdocs까지 알아볼 것이다. 만약 membercontroller에서 member에 정보를 저장하는 createMember의 메서드의 기능을 테스트하고 싶다고 했을 때 @WebMvcTest@AutoConfigureMockMvcclass MemberControllerMockTest { @..

35일차 회고

오늘은 테스트 케이스에 대해 작성하는 방법에 대해서 정리하고자 한다.기본적으로 테스트는 기능테스트, 통합테스트 , 단위 테스트로 나뉘고기능 테스트애플리케이션 전체통합 테스트데이터베이스와 연결하여 테스트슬라이스 테스트애플리케이션 내 메서드 기능 FIRST원칙을 따르는데 FAST 빠르게           Independent 독립적으로Repeatable 반복적으로Self-validating 셀프 검증이 되도록Timely 시기 적절하게라는 원칙을 따르게 된다.보통 JAVA에서는 Junit을 사용하여 단위 테스트를 하게 되고,  Assertion(어써션)이란?Assertion(어써션)을 검색해 보면 우리말로 ‘단언’, ‘단정’ 등의 뜻을 확인할 수 있는데 그 의미가 선뜻 와닿지 않습니다.테스트 세계에서 Asse..

32~34

오늘은 JPA Spring boot의 핵심기능에 대해서 정리해 보고자 한다.기존 JDBC Spring JDBC등 Spring의 Repository역활을 하는 데이터베이스 기술들이 있지만, 요즘의 대세는 JPA기술이라고 한다.즉 JPA는 ORM기술로 데이터베이스로 연동할때 객체를 중심으로 연동하는 기술이다. 즉 클래스를 테이블로 인식하고 연동하는 기술이다. JPA의 P는 영속성을 뜻하는데 이것은 entitymanger을 통해서 확인할 수 있다. ORM은 객체(Object)와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술입니다.JPA에서는 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트(Persistence Context)라는 곳에 보관해서 애플리케이션..

30~31

이게 뭐람.. 계속 티스토리 400 Not found가 떠서 다른 Tistory 블로그도 다 그렇게 뜨길래 서버가 터진줄 알고 계속 기다렸더니 혹시나 bing으로 들어가봤더니 되는..? 이게 무슨일이지.. 쨌든 다시 bing으로 시작한다.. 얼마나 밀린거야  오늘 알아 봐볼 범위는 Spring MVC부분에서 Excpetion 즉 예외에 대한 처리 부분이다. 기본적으로 Spring boot에서는 한 클래스 안에서 @ExceptionHandler을 명시하고 받을 Exception을 명시하면 그에 대한 예외를 처리할 수 있다. 예를 들면 @ExceptionHandler public ResponseEntity handleException(Exception e) { final List fiel..

반응형