Java/Spring10 [Spring Boot] 유효성 검사와 예외처리 1. 유효성 검사 1.1. 스프링 부트에서의 유효성 검사 먼저 유효성 검사를 위한 프레임워크가 없던 시절의 유효성 검사에 대해 살펴보면 몇가지 문제점이 있다. 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스별로 분산돼 있어 관리하기가 어렵고, 검증 로직에 중복이 많아 코드의 효율성이 떨어진다. 이 같은 문제를 해결하기 위해 자바 진영에서는 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하기 시작했다. 이는 어노테이션을 통해 검증을 진행하여 개발자가 직접 검증 로직을 구현할 필요가 없게 되었다. 유효성 검사는 아래 이미지와 같이 각 계층으로 데이터가 넘어오는 시점에 해당 데이터에 대한 검사를 진행한다. 계층 간 데이터 전송에 대체로 DTO를 사용하고 있기 때문에 DTO를 대상.. 2023. 4. 14. [Spring Boot] 연관관계 매핑 1. 객체 연관관계 vs 테이블 연관관계 객체 객체는 참조를 통해 연관관계를 맺는다. 참조를 통한 연관관계는 단방향이다. 즉, 객체에서의 양방향은 두 엔티티가 서로 단방향 연관관계를 갖고 있는 것이다. 테이블 테이블은 외래키로 연관관계를 맺는다. 외래키를 통한 연관관계는 언제나 양방향이다. 외래키가 있으면 해당 키를 중심으로 A JOIN B와 B JOIN A 모두 가능하기 때문이다. 2. 연관관계 매핑 종류 2. 1. 일대일(One To One) 매핑 2. 1. 1. 일대일 단방향 매핑 public class Member { ... @OneToOne @JoinColumn(name = "member_detail_id", referencedColumnName = "id") private MemberDetai.. 2023. 4. 9. [Spring Boot] 테스트 코드 작성 1. 테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 일부러 오류를 발생시켜 의도한대로 예외 처리가 수행되는지 확인 의도한 비즈니스 로직대로 결과값이 잘 나오는지 확인 리팩토링의 리스크가 줄어든다. 서비스 업데이트 과정에서 코드를 수정하면 그와 연관된 다른 코드에 영향을 주기 마련이다. 이때 작성되어 있는 테스트 코드를 실행해봄으로써 일련의 과정을 보다 수월하게 수행해볼 수 있다. 명세 문서로서 기능할 수 있다. 잘 작성된 테스트 코드를 보면 특정 로직에 어떤 값을 입력하면 어떤 값이 반환되는지를 이해할 수 있다. 이를 통해 코드 작성자의 의도를 다른 개발자가 이해하기 수월하게 만들 수 있다. 2. 단위 테스트와 통합 테스트 2. 1. 단위 테스트 일반적으로 메서드 단위의 테스트.. 2023. 3. 31. [Spring Boot] 스프링 부트와 데이터 베이스 연동 1. ORM ORM(Object Relational Mapping)은 객체지향프로그램에서의 객체(Objects)와 관계형 데이터베이스의 테이블을 자동으로 매핑하는 기술이다. 이를 이용하여 개발자는 DB에 대한 쿼리문이 아닌 자바 코드(메서드)로 DB의 데이터를 조작할 수 있다. 1.1. 장점 데이터베이스에 대한 종속성이 줄어든다. 데이터베이스 교체 시에 비교적 적은 소요 발생 복잡한 쿼리 작성에 대한 소요를 줄임으로써 비즈니스 로직 개발에 더욱 집중할 수 있다. 1.2. 단점 객체지향프로그램의 객체와 데이터베이스의 테이블 사이의 관점 불일치가 발생한다. 상속: RDMS에는 상속의 개념이 없다. 연관관계: 자바에서는 객체를 참조함으로써 연관성을 나타내지만 RDBMS에서는 외래키를 삽입함으로써 연관관계를 맺.. 2023. 3. 27. 이전 1 2 3 다음