spring 8

@Mappings 사용하기

[ 바로가기 목차 ] 들어가기 알아보기 마무리 [ 들어가기 ] 여러 테이블 혹은 DB에서 데이터를 가져와서 원하는 작업을 하는 방법에는 여러가지가 있습니다. 가져온 데이터를 원하는 형식이나 여러 객체를 하나의 객체로 합치는 일은 매우 흔한 일입니다. 이때 이러한 매핑 작업을 직접 개발자가 하게 된다면 문제가 발생할 수 있습니다. - 코드의 중복 - 생산성 저하 - 실수로 인한 데이터 누락 - 복잡한 로직까지 추가된다면 코드 가독성 저하 이러한 문제를 해결하기 위해 스프링(Spring)에서는 라이브러리를 지원합니다. - Mapstruct - ModelMapper 맵 스트럭트(MapStruct) 와 모델 매퍼(ModelMapper)의 차이점을 간단하게 설명하자면 객체의 생성 방식에 조금의 차이를 가지고 있습..

스프링 2023.12.13

[Error] QueryExecutionRequestException : Not supported for DML operations

직접 @Query 파라미터를 통해 데이터를 지우려고 했을 때, 발생한 Error로 쿼리유형이 잘못 동작했을 때 발생하는 타입이다. 이를 해결하기 위해서는 해당 query 메서드를 실행한 곳에 2개의 어노테이션을 추가해줘야 한다 @Modifying @Transactional @Modifying 메서드는 Query 어노테이션으로 작성된 insert나 update, delete 쿼리를 사용할 때 필요로 한다 (주로 벌크연산을 하나의 쿼리로 수행할 때 사용 ) 벌크 연산 관련 참고자료 :( https://data-make.tistory.com/617 ) @Modifying 공식문서 ( https://docs.spring.io/spring-data/data-jpa/docs/current/api/org/spring..

What is JPA(Java Persistence API)?

if(백엔드 개발자를 희망하는 사람 中) if(Spring Framework를 사용하는 사람이라면) known JPA 웃고자 대충 만들었다. 그 정도로 Spring을 사용해본 경험이 있으면 JPA를 모를수가없다. 오늘은 이 JPA와 관련해 이야기를 나눠보려고 한다. 이 글은 인프런-김영한 자바 ORM 표준 JPA 프로그래밍을 참고한 내용입니다. 우리는 Spring JPA를 사용하면서 이 JPA가 무엇인지, 왜 사용하는지를 여러 번 고민해본 적이 있을 것이다. JPA는 그냥 어마무시한 놈이다 이 JPA를 사용하는 이유는 바로 이 것이다 객체와 관계형데이터베이스(RDB)간의 패러다임의 불일치를 해결 - 목차 - 1. JPA란? 2. JPA를 왜 사용해야 하나? 3. JPA의 동작과정 1. JPA란? JPA(..

스프링/JPA 2022.12.09

스프링 AOP

이 글은 우테코(봄의 AOP와 Spring AOP) 및 여러 정보들을 종합해 학습한 내용입니다. https://www.youtube.com/watch?v=hjDSKhyYK14&list=WL&index=84&t=305s https://engkimbs.tistory.com/746 https://yadon079.github.io/2021/spring/spring-aop-core What is 스프링 AOP? AOP는 Aspect Oriented Programming의 약어 (관점 지향 프로그래밍) 이 관점 지향은 "관점"을 이용해 로직을 관점의 측면에서 나누어서 본다(핵심vs부가적). 그래서 이 관점을 기준으로 각각을 모듈화 하겠다는 것이다. 그럼 이 모듈을 필요로 하는 곳에서 호출만 하면 되니 어떻게보면 J..

스프링 2022.12.07

Day.27 자바 진영의 스프링

스프링은 자바진영의 웹 어플리케이션 제작 지원을 도와주는 프레임워크다. 과거에 스프링을 공부하고 써본적이 있어서 금일 진행한 내용이 어렵게 느껴지진 않았다. 과거에는 서블릿이나 jsp 이런 기술들을 사용해서 웹을 제작하고 배포했었더라면 스프링은 그 기술들을 확장적용시켜 어노테이션 기반의 기술이 탄생했고, 그 외에도 스프링에서 내부적으로 지원해주는 라이브러리와 프레임워크들이 많아서 편리하게 웹을 개발하고 디자인 할 수 있다. Spring MVC를 통해 모델과 뷰, 컨트롤러들을 분리시켜 편리하고 확장성있게 개발이 가능하다는 장점이 있다. 사용자는 Controller를 조작해서 model을 통해 데이터를 가지고 오고, 그 정보를 바탕으로 시각적 표현을 담당하는 view를 제어해 사용자에게 정보를 전달한다. 스..

Controller, Service 왜 나눌까요? (2022.12.02 - 작성 중)

Spring을 이용해서 개발하다보면 기계적으로 무언가를 만들거나, 혹은 이 것을 왜 ? 이렇게 구분하거나 사용하거나 궁금증을 가지게 된다. 그럴때가 되면 항상 그 궁금증을 해결하려고 북마크를 걸어놓거나 바로 찾아서 정보를 획득하고 정리하는 편이다.. (물론 북마크만 걸어놓고 미루다가 나중에 하는 경우도..) 오늘은 컨트롤러(Controller) 그리고 서비스(Service)단이다. 이유에 대해서 먼저 설명을 하자면 다음과 같다 트랜잭션의 처리 API의 확장 및 변경 1. 트랙잭션의 처리 내가 아는 트랜잭션은 DB 관련 작업 시 작업의 처리 순서? 단위?정도로 생각을 했었다. 트랜잭션은 DB에 데이터 관련 작업을 하고 업데이트를 할 때, 이 과정들을 한번에 처리하고, 성공 혹은 실패 시 롤백을 하거나, 커..

스프링 2022.12.02

Repository와 Service

공부를 하던 도중 궁금한 점이 생겼다. 우리가 DB와 관련된 작업을 하기 위해선 Repository와 Service를 만들어야하는데, 다른 사람들이 작성한 코드를 보면 기능을 Repository에서 구현하기도 하고, Service에서 구현하기도 하는데, 왜 이렇게 구분하는지가 궁금했다. (기존에 나는 service에서 구현) 김영한 님이 말하길 DB에 접근하는 코드는 Respository에 위임하고, Service 패키지에는 비즈니스 로직과 관련된 코드를 위임하는데, 이렇게 구분해두면 비즈니스 로직및 관련 부분에 오류가 발생하면 Service를 확인하고, DB 접근과 관련된 문제가 발생하면 Repository를 확인하면 된다고 한다. 서비스에서 DB계층을 연결하려고 하면 Repository라는 저장소를 ..

스프링/백엔드 2022.06.12

로깅 간단히 알아보기

서비스를 개발하고 테스트를 할 때, 그 로직이 잘 동작하는지를 확인하는 방법은 다양하다. 그 중에서 나는 보통 출력문 하나를 넣어서 잘 출력이 되는지를 확인하고는 했는데, 이러한 방식은 실무에서 사용하지 않고 사용을 권장하지 않는다. 그래서 출력문이 아닌 별도의 로깅 라이브러리를 사용해 로그를 출력하는데, 이 로깅 라이브러리의 종류가 매우 많다. 그래서 몇 개의 예시를 통해 정리해보고자 한다. @RestController public class LogTestController { // 이 코드는 로그를 선언하는 방법이다. private final Logger log = LoggerFactory.getLogger(getClass()); // 5번라인의 로그 선언 방법 외에도 아래 2개의 방법이 있다. pr..

스프링/백엔드 2022.05.18