본문 바로가기

전체 글215

Mockito 적용하여 Controller test 해보기 Testing 시에 Layer간의 연결을 끊고 Layer 별 기능을 독립적으로 테스트할 수 있도록 도와주는 도구가 바로 Mockito 입니다.🍸 왜 layer별로 독립적인 테스트가 필요할까요? 특정 계층의 테스트만 필요한데 불필요한 전 계층을 다 거치게 되면서 성능이 떨어지거나 테스트 관심 영역 면에서 벗어나는 것을 방지하기 위해서 입니다. 처음 사용해보려니 생소한데, 어떤 요소들을 생각하면서 사용하면 좀 더 쉽게 사용할 수 있는지 깨달았던 부분들을 글로 남겨두려고 합니다. Mockito 사용법 1. 테스트하려는 Controller와 유사한 구조를 갖는 test class를 test directory에 생성합니다. : 유사한 구조라함은 Controller에서 의존하는 객체, 정의된 메서드(로직은 제외)를.. 2022. 7. 18.
Entity mapping-Cascade의 역할 Cascade의 역할을 제대로 알지 못해 힘들었던 며칠 🥲 눙물이 납니다.. 그래도 덕분에 Entity mapping에 대해서도 좀 더 잘 알게되고 Entity와 Dto 간 mapping도 여러번 수정해 보며 어떻게 하는 것인지 좀 더 알게된 시간이었습니다. 먼저 Cascading이 언제 필요한 것인지 보면, Cascading은 두 entity의 존재가 서로에게 의존적일 때 필요합니다. 예를 들어서, Member-Address라는 관계가 있다고 했을 때 Address는 Member가 있어야만 그 의미를 갖게 됩니다. (Member 정보는 없는데 주소만 있다면 누구의 주소를 의미하는지 그 쓰임이 무색해질테니까요) 그렇기 때문에 Member 정보를 삭제할 때 그와 관계된 Address 정보도 같이 삭제되어야.. 2022. 7. 17.
Hibernate에러: object references an unsaved transient instance - save the transient instance before flushing 두번 정도 마주친적이 있는 object references an unsaved transient instance - save the transient instance before flushing 에러인데, 어떤 에러이고 어떻게 해결할 수 있는지 알아보려고 합니다. org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: //(1) object references an unsaved transient instance - save the transient instance before flushing : com.codestates.order.entity.OrderCoffee.o.. 2022. 7. 14.
Content type 'text/plain;charset=UTF-8' not supported 에러 혹시 Postman으로 request를 보내다가 Content type 'text/plain;charset=UTF-8' not supported 라는 에러를 만나게 된다면 노란색 동그라미 부분에 타입이 혹시 Text로 되어 있지는 않은지 확인해보시기 바랍니다. 저는 JSON형태의 request를 보내야 하는데, text 형태로 지정하여 보냈더니 아래와 같이 에러가 발생했습니다. Text대신 JSON으로 바꾸어주니 에러 없이 제대로 작동하게 되었습니다. 2022. 7. 3.
[Spring] Spring JPA 잘 알면 편리한데 깊이 들어가면 어렵다는 JPA의 기본적인 내용들을 학습해보았습니다. ☺️.. 아직 깊이 들어가지도 않았는데 살짝 떨립니다. 잠 못자는 날이 올까봐 ㅎㅎ 일단 Spring JPA를 어떻게 사용하는지, Spring JDBC와의 어떤 차이가 있는지 위주로 살펴보려고 합니다. Spring JDBC의 경우는 개발자가 Get, Post, Patch, Delete등의 method에 직접 query문을 작성해야했습니다. 이 방식은 Table의 수가 늘어날 수록 상당히 관리가 어렵다고 합니다. 그래서 대안으로 나온 방식이 ORM이라는 것인데, ORM은 Object Relational Mapping의 약자로 객체(Object)와 데이터 베이스(Table)를 자동으로 Mapping 하는 기술입니다. 자동으.. 2022. 7. 3.
Java와 Spring를 공부하며 드는 생각 Data layer와 관련된 공부를 하다보니 data repository를 관리하는 여러 기술(?)들이 있다는 것을 알게되었습니다. 지금까지 들어본 것으로는 JDBC, Spring JDBC, Spring Data JDBC, Spring JPA, Spring Data JPA 이렇게 됩니다. Data라는 단어가 들어간 것과 안 들어간 것이 서로 다른 것이라는 사실을 알고는 배워야 할게 너무 많게 느껴져서 ㅎㅎ이걸 언제 다 배우나ㅎㅎ 라고 생각이 들었습니다. 그래도 다행인 것은 조금 나중에 나온 기술들은 이전 기술의 불편함을 해결하는 방식이고, 기본적인 사용법은 유사하다는 것이었습니다. 무엇보다도 모두 다 DB에 저장된 데이터를 어떻게 가지고 오고 가공할 것인지와 관련된 기술들이므로 데이터 사용과 가공이 핵심.. 2022. 7. 2.
[Spring] Spring JDBC 사용하기 Spring JDBC를 사용하기 위해서는 먼저 jdbc dependency를 추가해주어야 됩니다. org.springframework.boot spring-boot-starter-data-jdbc 그리고 JdbcTemplate class의 객체를 이용하여 jdbc를 사용하면 됩니다. Dao처럼 repository 역할을 하는 class에 주입하여 사용하게 되는데, 아래 코드를 참고하시면 됩니다. @Repository public class PersonJdbcDao { @Autowired JdbcTemplate jdbcTemplate; //... } 이 jdbcTemplate는 CRUD 기능을 하는 method들이 정의되어 있고, 그 method와 sql query문을 사용해서 CRUD를 구현하게 되는 것.. 2022. 7. 2.
[Spring] H2 in-memory DB 사용하기 H2 database는 Java 언어로 되어 있는 관계형 데이터베이스 관리 시스템입니다. in-memory database이며 용량이 가벼운 편이기에 애플리케이션 테스트에 많이 사용되고 있다고 합니다. H2 DB 사용 시작하기 H2를 사용하려면 spring dependency에 h2 dependency를 추가하여야 합니다. Spring project를 만들 때 초기 dependency 설정 시에 미리 추가해주면 됩니다. Maven을 사용하는 경우는 아래와 같이 dependency가 설정되어 있을 것입니다. com.h2database h2 runtime 그리고 application.properties에 아래 항목을 추가해줍니다. spring.datasource.url=jdbc:h2:mem:testdb;NO.. 2022. 6. 28.
API vs HTTP API vs REST API vs JSON 차이점 알아보기 정말 자주 사용하는 용어들이지만 아직까지도 매번 의미가 헷갈려서 간단하게 정리해봅니다 ☺️ API 한 애플리케이션이 다른 애플리케이션의 기능을 사용하게끔 해주는 매개체. 두 애플리케이션을 연결해주는 역할을 한다고 볼 수 있음! HTTP API HTTP를 사용하여 프로그램끼리 소통하는 API를 지칭함. REST API HTTP의 장점을 최대한 잘 활용하기 위한 원칙을 REST라고 하며, 이 원칙을 준수하여 만든 API를 REST API라고 부름. URI는 정보의 "자원"을 표현해야 함(동사형X, 명사형O) 자원에 대한 행위는 HTTP Methods(GET, POST, PUT, DELETE등)로 표현해야 함 etc... JSON Client의 요청과 Server의 응답의 형식을 표준화 한 것 중의 하나. X.. 2022. 6. 27.
반응형