I leaned/스프링,스프링부트

@Size @Size 어노테이션은 컬렉션, 맵, 문자열 등의 크기를 검증할 때 사용됩니다. 문자열의 경우, 문자열의 길이를 나타내며, 컬렉션 또는 배열의 경우 요소의 개수를 나타냅니다. 주로 최소 크기와 최대 크기를 지정하여 범위를 정할 수 있습니다. @Length @Length 어노테이션은 주로 문자열의 길이를 검증할 때 사용됩니다. Hibernate Validator에 속한 어노테이션으로, @Size와 유사하지만 특정 프레임워크에 의존합니다. 최소 및 최대 크기 기본적으로 @Size 어노테이션을 사용하는 것이 더 일반적이다.
@Modifying Spring Data JPA에서 @Query를 이용해 INSERT, UPDATE, DELETE 쿼리를 작성할 경우 붙여줘야하는 어노테이션이다(Select는 아님) 여기에 줄 수 있는 옵션에는 2가지가 있다 flushAutomatically : 쿼리 실행 전 쓰기 지연 저장소의 쿼리를 flush 하는 옵션 clearAutomatically : 쿼리 실행 후 영속성 컨텍스트를 비우는 옵션 clearAutomatically = true @Query 쿼리 실행 후에 영속성 컨텍스트를 비워서 DB에서 수정된 값을 정상적으로 조회할 수 있게 하기 위해 사용한다 flushAutomatically = true @Query 쿼리 실행 전에 쓰기 지연 저장소에 남아있는 쿼리를 미리 flush 하고자 할..
도커 빌드 - 이미지 만들기 도커파일있는 디렉토리에서 docker build --tag dsa05037/pnutour-springboot . 예시 : docker build --tag dsa05037/pnutour-springboot . 여기서 dsa05037은 도커허브 아이디이다. 이렇게 이름을 설정해놓아야 푸시가 가능하다. 뒤에 . 도 넣어야 한다. 태그 설정시 넣어주면 된다. 도커 실행 예시 docker run --name mongodb-container -v ~/data:/data/db -d -p 27017:27017 mongo --name은 실행됐을 때의 컨테이너 이름이다. 지정하지 않을 시 아래 사진처럼 랜덤으로 적용된다. -v ~/data:/data/db는 호스트(컨테이너를 구동하는 로컬 컴..
https://hudi.blog/spring-rest-docs/ Spring REST Docs를 사용한 API 문서 자동화 API 문서 자동화 백엔드와 프론트엔드 개발자 사이의 원활한 협업을 위해서는 REST API 명세에 대한 문서화가 잘 되어있어야 한다. 구글 독스, 스프레드 시트, 위키, 노션 등을 사용해서 직접 API 명 hudi.blog https://techblog.woowahan.com/2597/ Spring Rest Docs 적용 | 우아한형제들 기술블로그 {{item.name}} 안녕하세요? 우아한형제들에서 정산시스템을 개발하고 있는 이호진입니다. 지금부터 정산시스템 API 문서를 wiki 에서 Spring Rest Docs 로 전환한 이야기를 해보려고 합니다. 1. 전환하는 techbl..
스프링 프레임워크에서 어노테이션으로 트랜잭션을 읽기전용 모드로 설정할 수 있다. @Transaction(readOnly=true) 예상치 못한 엔티티의 등록,변경,삭제를 예방할 수 있고, 성능을 최적화할 수 있다. readOnly = true를 설정하게 되면 스프링 프레임워크는 JPA의 세션 플러시 모드를 MANUAL로 설정한다. MANUAL모드에서는 강제로 플러시를 호출하지 않는 한 플러시가 일어나지 않는다. 트랜잭션 Commit 시 영속성 컨텍스트가 자동으로 flush 되지 않으므로 조회용으로 가져온 Entity의 예상치 못한 수정을 방지할 수 있다. 트랜잭션을 커밋하더라도 영속성 컨텍스트가 플러시 되지 않아서 엔티티의 등록, 수정, 삭제가 동작하지 않고, 또한 읽기 전용으로, 영속성 컨텍스트는 변경..
AOP란 AOP(Aspect-Oriented Programming)는 프로그래밍 패러다임의 하나로, 관심사를 분리하여 코드 의 모듈화를 개선하기 위한 기법입니다. 이를 통해 코드의 가독성과 유지 보수성을 높일 수 있습니다. 용어 Advice: 부가기능을 수행할 메서드 생성 Pointcut: 부가 기능을 적용할 핵식로직을 결정 (사용할 곳에 어노테이션) Aspect: 부가 기능과 해당 부가 기능을 어디에 적용할지 정의한 것 (클래스 생성 Advice + Pointcut) (클래스 파일) Joinpoint : 부가기능이 핵심로직 실행전에 실행될지 후에 실행될지를 결정 로그인 메서드 login() 가 있다면 이 메서드는 핵심로직이다. 로그인 메서드가 실행될 때 마다 로그를 남기고 싶다면, 로그를 남길 메서드를..
단위테스트란? 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위테스트를 쉽게 해주는 테스트 지원 프레임워크 junit 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별합니다. ( assertEquals(예상val, 실제val)) JUnit4 부터는 테스트를 지원하는 어노테이션을 제공합니다. ( @Test, @Before, @After) @Test 메서드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 합니다. Juiit 지원 어노테이션 @Test - 해당 어노테이션이 선언되면 메서드는 테스트를 수행하는 메..
단위 테스트 순서 1. 더미데이터 준비(테스트를 위한 데이터를 준비한다. 직접 데이터를 테스트코드에서 넣어도 되고 FakeStroe,FakeUser 등의 클래스나 함수를 만들어 둬도 된다. 또는 spring data-faker 라이브러리를 이용해도 된다. 2. Test할때는 데이터베이스 새로 만들어서 해야한다. 실제 데이터베이스와의 연결을 끊어야함(실수조심!!) config파일여러개 만들어서 관리해야함(spring boot 기능) 3. 테스트 패키지에 테스트 파일을 생성한다. 4. 테스트 코드 작성 레포지토리 테스트의 목적은 올바른 쿼리, 좋은 쿼리가 나가도록 테스트하는 것이다. 기본적으로 JPA메소드들은 잘 만들어져 있다. 의도대로 쿼리가 나가는지, 과도한 쿼리, 쓸데없이 무거운 쿼리가 나가지는 않는지..
윤재에요
'I leaned/스프링,스프링부트' 카테고리의 글 목록