본문 바로가기
728x90

전체 글196

[JUnit] @SpringBootTest, @WebMvcTest, @MockBean, WebClinet 다음과 같은 컨트롤러와 서비스가 있다. SampleController.java @RestController public class SampleController { private SampleService sampleService; public SampleController(SampleService sampleService) { this.sampleService = sampleService; } @GetMapping("/hello") public String hello() { return "hello " + sampleService.getName(); } } SampleService.java @Service public class SampleService { public String getName() { .. 2022. 9. 16.
[JUnit5] 기본 테스트 어노테이션 @Test, @BeforeAll, @BeforeEach, @AfterAll, @AfterEach, @Disabled @Test 이 어노테이션을 붙이면 Test 메서드로 인식하고 테스트 한다. @Test void test1() { Study study = new Study(); System.out.println("test1"); } @BeforeAll 본 어노테이션을 붙인 메서드는 해당 테스트 클래스를 초기화할 때 딱 한번 수행되는 메서드다. 메서드 시그니쳐는 static 으로 선언해야한다. @BeforeAll static void beforeAll() { System.out.println("BeforeAll"); } @BeforeEach 본 어노테이션을 붙인 메서드는 테스트 메서드 실행 이전에 수행된다. @BeforeEach void beforeEach() { System.out.println("BeforeEach").. 2022. 9. 16.
[ intellij ] No tests found for given includes: (filter.includeTestsMatching) 1. @Test Annotation을 썼는지 확인한다. 2. 잘 썻는데도 test를 인식하지 못한다면 메뉴 바에서 File > Settings > Gradle > Run tests using : intellij IDEA로 변경 2022. 9. 16.
[Spring data JPA] Auditing (AuditingEntityListener) 1. Jpa Auditing 이란? Auditing이란? Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때, 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재한다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼들.. 그런데 이것들이 도메인마다 공통으로 존재한다는 의미는 결국 코드가 중복된다는 말이다. 이 중복으로 인한 번거로움을 해소해주기 위해 spring data JPA는 Auditing이라는 기능을 제공한다. Audit는 감독하고 검사하다는 뜻으로, 해당 데이터를 보고 있다가 생성 또는 수정이 발생하면 자동으로 값을 넣어주는 편리한 기능이다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후 update를 하는 경우, 매번 시간 데이터.. 2022. 9. 15.
[Spring] Gradle 버전 확인 방법 (1) IntelliJ의 Project Window에서 gradle > wrapper > gradle-wrapper.properties 파일을 확인해봐도 되고 (2) 터미널 명령어로 확인할 수 있다. 터미널에서 ./gradlew --version 실행 2022. 9. 15.
[SQL] LIKE문 예제 SQL LIKE문 쿼리문 WHERE절에 주로 사용되며, 부분적으로 일치하는 칼럼을 찾을때 사용한다. 1. 문법 SELECT * FROM [테이블명] WHERE LIKE [조건] --A로 시작하는 문자를 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A%' --A로 끝나는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A' --A를 포함하는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%' --A로 시작하는 두글자 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A_' --첫번째 문자가 'A''가 아닌 모든 문자열 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 L.. 2022. 9. 8.
[Spring Jpa] nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist 발생 원인 JPA에서 부모 Entity의 @ONETOONE , @MANYTOONE 등 조인 관계 데이터 데이터 저장할 경우 에러 발생. cascade 옵션을 ALL로 처리 할 경우 부모가 save() 될때 영속성이 detached(분리)되어 persist(지속)되지 않기 때문에 에러가 발생했다. [에러 발생 코드] @ManyToOne(cascade = CascadeType.ALL) private Board board; 해결 방법 JOIN 어노테이션에 cascade 옵션 변경. JPA CASCADE옵션은 영속성 전이를 제공한다. 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. CascadeType 종류 1. CascadeType.PERSIST 엔티티를 생성하고, 연관 .. 2022. 9. 6.
[Spring Jpa] TransientPropertyValueException: object references an unsaved transient instance 에러 org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : ... 원인 JPA 연관 관계 테스트 중에 발생했다. FK 로 사용되는 컬럼값이 없는 상태에서 데이터를 넣으려다 발생한 에러이며 영속성때문에 나는 오류다. FK로 쓰는 객체가 아직 저장이 안되서 오류가 난다고 한다. 객체간 @OneToMany, @ManyToOne같은걸 쓸 때 날 수 있다. 예를 들어 Member (email, name) 이라는 테이블과 Board (id, title, member id) 라는 테이블 관계가 있을 때, Member .. 2022. 9. 6.
[Spring] DTO, VO, Model 의 차이 공통점으로는 Spring MVC에서 데이터 관리 및 비즈니스 로직을 처리하는 Model 부분. (DAO, DTO, Service..) 1. DTO(Data Transfer Object) 데이터 전송 객체. 순수하게 데이터를 담아 계층 간으로 전달하는 객체다. 로직을 갖고 있지 않은 순수한 데이터 객체이며, 데이터 '전달' 용도로만 사용하기 때문에 메서드로 getter/setter 만 갖는다. public class UserDTO { private String name; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getI.. 2022. 9. 6.
728x90