본문 바로가기
반응형

BackEnd83

[Spring] Optional 처리 ❓ OptionalJava8에 새로 추가된 API프로그램 실행과정에서 발생하는 NullPointerException을 피하기 위한 APInull이 올 수 있는 값을 감싸는 Wrapper 클래스프로그램의 실행결과로 Optional를 반환하면 언제나 null이 아닌 객체를 반환할 수 있어서 NullPointerException을 피할 수 있다.Optional는 클래스이기 때문에 다양한 메소드를 제공한다.💡 예시// 값이 null인 Optional 객체 생성하기Optional optional = Optional.empty();boolean present = optional.isPresent(); // present : falseboolean empty = optional.isEmpty(); // empty.. 2025. 1. 18.
[Spring] JUnit 단위테스트 ❓ 단위테스트개발자 레벨의 테스트주로 그 기능을 수행한 개발자가 테스트✔️ 단위테스트의 목적기능 하나를 테스트하는 것예상한 값과 일치하는 값이 나오는지 테스트Service, Controller가 테스트 대상. Repository는 테스트할 필요 없음✔️ 장점반복적인 테스트 실행 가능@Transactional 어노테이션을 부착하면 자동으로 테스트 성공 직후 Rollback이 실행돼서 insert 작업도 여러번 테스트할 수 있다.테스트의 성공/실패 여부를 빠르게 확인할 수 있다.Spring에서 제공해주는 스프링 테스트와 연동해서 스프링 기반의 어플리케이션을 쉽게 테스트할 수 있는 테스트 케이스를 작성할 수 있다. * 통합테스트 : 여러 모듈 간에 연계가 잘 이루어지고 있는지 테스트📌 Eclipse에서의 J.. 2025. 1. 18.
[Spring] JPA(Java Persistence API)와 Spring Data JPA ❓ JPA(Java Persistence API)자바의 표준 데이터베이스 액세스 APIORM(Object-Relational Mapping, 객체-관계 매핑)을 이용한 데이터베이스 액세스 APIJPA의 대표적인 구현체 : Hibernate(하이버네이트) 프레임워크✔️ ORM객체와 관계형 데이터베이스의 테이블을 매핑하여 데이터베이스 액세스를 지원하는 기술SQL을 직접 작성해서 데이터베이스 액세스를 수행하는 대신, 자바 객체를 사용해서 데이터베이스의 데이터에 대한 CRUD 작업을 처리할 수 있다.데이터베이스 액세스 작업을 객체 지향적인 코드로 수행가능하다.개발자는 직접적인 SQL 쿼리 작성 없이 데이터베이스 액세스 작업을 수행할 수 있기 때문에 개발과정이 단순해지고, 코드의 가독성이 높아진다.데이터베이스와 .. 2025. 1. 18.
[Spring] Thymeleaf 타임리프 (+JSP 비교) ❓ Thymeleaf뷰 템플릿 엔진템플릿 엔진이란?: 지정된 템플릿 양식과 모델의 데이터를 합쳐서 동적 HTML 문서를 출력하는 라이브러리템플릿 엔진의 종류: JSP, FreeMarker, Thymeleaf서버 사이드 HTML 렌더링(SSR, Server Side Rendering)을 지원한다.타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링한다.JSP, FreeMarker, Thymeleaf는 서버 사이드 HTML 렌더링을 지원한다.✔️ Thymeleaf 특징내추럴 템플릿 엔진디자인팀이 제공한 HTML 코드를 변경하지 않고 그대로 사용하기 때문에 디자인팀과 개발팀 간의 협업이 용이하다.HTML 파일을 그대로 사용하기 때문에 서버에 배포하지 않고도 화면을 즉시 확인해볼 수 있어서 화면 디자인 및 테스.. 2025. 1. 18.
[Spring] @RequestBody +서버에 요청메시지 보내고 받는 방법(쿼리스트링, @PathVariable, FormData) 웹에서 화면전환(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다.비동기 통신을 하기 위해서는클라이언트에서 서버로 요청 메시지를 보낼 때 본문(Body)에 데이터를 담아서 보내야 하고,서버에서 클라이언트로 응답을 보낼 때 본문(Body)에 데이터를 담아서 보내야 한다.즉, 요청본문 RequestBody, 응답본문 ResponseBody 를 담아서 보내야 한다.이 때, Spring MVC의 @RequestBody 어노테이션과 @ResponseBody 어노테이션을 사용해 간편하게 데이터를 변환해서 송수신할 수 있다.❓ @RequestBodyPost/PutMapping 요청핸들러 메소드의 파라미터에 부착하는 어노테이션(GetMapping은 불가, 메시지바디에서 읽어올 게 없음)주로 Ajax.. 2025. 1. 18.
[Spring] mybatis의 <ResultMap>, <association> 태그 ❓ join 매핑 등 복잡한 구문을 간단하게 서술할 수 있도록 만들어주는 태그컬럼이름과 값을 저장하는 객체의 프로퍼티명(멤버변수명)을 매핑시킨다.✔️ 주요 속성 1. type조회결과를 저장할 클래스의 전체 이름2. id식별자를 지정한다.✔️ 주요 태그 1. 특정 컬럼값을 멤버변수에 매핑시킨다.기본키 컬럼2. 특정 컬럼값을 멤버변수에 매핑시킨다.기본키 컬럼을 제외한 나머지 컬럼❓ 복잡한 타입의 연관 관계를 나타낸다. (대부분 객체 타입)"has-one" 타입의 관계를 다루는 태그복잡한 타입의 연관 관계 ex)상품 - 제조사사원 - 소속부서게시글 - 작성자class Product { int no; String name; int price; Company company; // 복.. 2025. 1. 18.