반응형 프로그래밍언어 & 프레임워크/스프링(Spring)26 [Spring] 게시글 수정 로직 위치 Entity vs Service Entity에 게시글 수정 로직을 작성 @Getter @NoArgsConstructor @Entity public class Board extends Timestamped { ... public void update(String title, String content) { this.title = title; this.content = content; } ... } 비즈니스 로직을 엔티티에 구현하는 것은 도메인 주도 개발 방식이다. 위와 같은 방식은 서비스 부분을 좀 더 가볍게 만들 수 있습니다. 반대로 엔티티에 비즈니스 로직을 구현하지 않으면 서비스 부분이 코드가 많이 길어집니다. 엔티티에 비즈니스 로직을 구현하는 것은 엔티티를 객체로 사용 엔티티를 단순히 데이터 전달 역할을 하게 만드는건 엔티티를 자료.. 2022. 5. 18. [Spring] Jasypt를 활용한 yml 암호화해보기(gradle, intellij) Jasypt란?개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 자신의 프로젝트에 기본 암호화 기능을추가할 수 있도록 하는 Java 라이브러리입니다. 자바 외에도 Java + Spring, Java + Hibernate 등 여러 프레임 워크에서 암복호화를 지원해주는 오픈소스입니다. 저는 이 Jasypt를 활용해서 yaml 파일에 있는 민감한 정보(DB 계정 비밀번호 등)을 암호화 하는데 사용했습니다. 1. build.gradle에 dependency 추가 // Jasypt implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' 2. config 폴더에 JasyptConfig 파일 생성 .. 2022. 5. 10. [JPA] Update 시 InvalidDataAccessApiUsageException 에러 간단한 게시판 프로젝트에서 게시글 수정을 하는 메서드를 호출 하는데 위와 같은 에러가 발생했습니다. * JPQL을 사용해서 update 쿼리문을 작성했습니다. 구글링을 한 결과 해당 메서드에 @Transactional 어노테이션을 달거나, Repository에 작성한 JPQL문 위에 @Transactional 어노테이션을 다는 방식으로 해결이 가능했습니다. 여기서 왜 @Transactional 어노테이션 의문이 생겼습니다. 구글링을 했지만 해당 내용에대해 명쾌하게 정리되어 있는 글이 없었습니다. 그래서 update 쿼리문에서 Transaction 이 필요한 이유를 검색 했습니다. 그 결과 update 문은 해당 테이블의 컬럼의 모든 데이터를 변하게 할 수 있는 강력한 쿼리문이기 때문에, 실수로 작성을 하.. 2022. 5. 8. 쿼리DSL을 사용하는 이유는?(QueryDSL) 참고자료우아한 테크코스 블로그 [Tecoble] 3기 케빈님의 글 => 링크작성자의 게시판 프로젝트 커밋 메시지 => 링크 QueryDSL을 교육기관을 들으면서 사용했던 적이 있습니다.그때는 너무 바쁘게 적용하고 QueryDSL을 사용하는 이점과 기존 쿼리문을 작성하는 것과의 차이를 정확하게 알지 못했습니다.그런데 이번에 혼자 게시판 프로젝트를 리팩토링하면서 이유를 알게 되었습니다. 😱 문제가 발생한 부분(위: 수정전, 아래: 수정 후) 정말 단순한 쿼리문이지만 잘못 작성해서 문제가 발생했습니다. 여기서 큰 문제는 직접 해당 프로그램을 돌려보는 상황에서 문제를 발견 했다는 것입니다.우선적으로 프로그램을 직접 돌려보면서 버그를 찾고 해결하는것은 상당히 비효율적입니다.그리고 만약에 로컬에서 돌려보지 않.. 2022. 5. 1. 이전 1 2 3 4 5 ··· 7 다음