반응형 Programing497 JPA Entity 내 Subquery 로 동작하는 속성 추가 방법 @Formula JPA Entity 에서 table 에는 존재하지 않지만, 특정 속성을 추가하여 관리해야되는 경우가 있습니다.이렇 때 사용하는 것이 @Formula 이고, subqyery로 동작하게 됩니다. 예를들어 아래와 같은 테이블이 있습니다. 여기서 진행중인 프로젝트를 조회를 한다면프로젝트 시작일자 진행중이지 않은 프로젝트를 조회한다면현재일자 프로젝트 종료일자 의 조건을 설정해야 합니다. 진행중 이라는 컬럼이 있으면 단순히 Y, N 으로 조회 할 수 있을 것 같습니다.이럴 때 @Formula 를 사용하여 처리 할 수 있습니다. @Getter@Setter@Entity(name = "project")public class Project extends BaseEntity { @Id @GenericGener.. Programing/JPA 2024. 5. 8. JPA 부모, 자식 관계에서 부모 삭제 시 모든 경우의 수를 알아보자 Cascade, orphanRemoval 차이, 벌크연산 FK 로 연결된 부모-자식 간의 관계에서 Cascade 를 설정하여 부모가 삭제되는 경우 자식도 삭제 해야하는 경우가 있고, 자식의 FK Column을 null로 초기화 해야 되는 경우가 있습니다. Cascade 의 오용은 큰 문제를 야기하기 때문에 주의해서 사용을 해야 됩니다. 예를 들어 부모(권한)-자식(멤버) 의 관계에서 부모에 Cascade.REMOVE 옵션을 주고 부모를 삭제할 경우 자식까지 모두 삭제가 되게 됩니다. 권한을 삭제했는데 해당 권한을 가지고 있는 멤버까지 삭제가 된다면 큰 문제가 발생하게 되겠죠! 그럼 부모 자식간의 영속성 전이가 발생하는 Casecade 와 고아객체 처리를 하는 orphanRemoval 옵션에 대해서 여러 예시를 들어 알아보도록 하겠습니다. 아래와 같이 권한과 멤.. Programing/JPA 2024. 4. 5. 인텔리제이 Intellij 환경 변수 설정 application 설정 파일 환경변수 사용 application.properties or yml 파일에 중요 정보를 등록할 때 텍스트 그대로 작성해서 사용할 경우 보안상 문제가 될 수 있습니다. 예를들어 JWT 나 RSA, Jasypt 예제에서 사용되는 키값을 어플리케이션 설정 파일에 그대로 문자열로 입력해 사용하는 경우가 있습니다. 이런 경우를 보안하고자 환경변수에 값을 넣어 어플리케이션 설정파일에 그대로 노출이 되지 않도록 하는 방법을 알아보겠습니다. application.yml security: jwt: secret-key: agisehlgkfjalbjiajelfkmelsjalfidgiejalsgkjdl9iajelig issuer: aljjabaegi.com jasypt: secret-key: com.aljjabaegi rsa: secret.. Programing/Security 2024. 4. 3. Swagger Springboot 3.x Grouping 방법 Swagger Springboot 3.x Grouping 방법입니다. Swagger에 대한 다양한 설정 방법은 아래의 Link를 확인하세요! Link : https://aljjabaegi.tistory.com/713 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-sta aljjabaegi.tistory.com Lin.. Programing/API 2024. 3. 25. Swagger Springboot 3.x JWT 인증 적용 방법 Swagger Springboot 3.x JWT 인증 적용 방법입니다. Swagger 다양한 설정 방법은 아래의 Link를 확인하세요! Link : https://aljjabaegi.tistory.com/713 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-sta aljjabaegi.tistory.com Link :.. Programing/API 2024. 3. 25. Swagger Springboot 3.x application.yml, properties 설정 옵션 Swagger Springboot 3.x application.yml, properties 설정 옵션입니다. Swagger 의 다양한 설정 방법은 아래의 Link를 확인하세요! Link : https://aljjabaegi.tistory.com/713 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-sta aljjab.. Programing/API 2024. 3. 25. Swagger Springboot 3.x Response 설정 방법 Swagger Springboot 3.x Response 설정 방법입니다. Swagger 의 다양한 설정 방법은 아래의 Link를 확인하세요! Link : https://aljjabaegi.tistory.com/713 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-sta aljjabaegi.tistory.com Li.. Programing/API 2024. 3. 25. Swagger Springboot 3.x Operation 설정 방법 Swagger Springboot 3.x Operation 설정 방법입니다. Swagger 의 다양한 설정 방법은 아래의 Link를 확인하세요! Link : https://aljjabaegi.tistory.com/713 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-sta aljjabaegi.tistory.com L.. Programing/API 2024. 3. 25. Swagger Springboot 3.x 의존성 주입 및 Information 설정, 기본 설정 Swagger Springboot 3.x 의존성 주입 및 Information 설정, 초기 세팅 방법입니다. 의존성 추가 Gradle 에 Spring-web starter 와 Swagger dependency를 추가합니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter' testImplementation 'org.springframework.boot:spring-boot-starter-test' /*starer*/ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '3.2.4' /*swagger*/ im.. Programing/API 2024. 3. 25. Gradle 파일 변수 설정 및 활용 Gradle 파일의 변수를 설정하는 방법을 알아보겠습니다. 변수 선언은 buildscript의 ext 를 활용합니다. buildscript { ext { springBootVersion = "3.1.4" } } 여러개의 변수를 사용하는 경우는 ',' 없이 아래로 붙여서 사용하시면 됩니다. buildscript { ext { springBootVersion = "3.1.4" queryDslVersion = "5.0.0" } } 선언 된 변수는 "${}" 를 써서 사용할 수 있습니다. plugins { id 'java' id 'org.springframework.boot' version "${springBootVersion}" } single quotation (') 을 사용하면 제대로 동작하지 않으니 do.. Programing/Springboot 2023. 12. 6. JWT Access Token, Refresh Token 사용 방식 정리, 장단점, 보안 JWT 에 대한 설명과 설정 방식은 아래의 링크를 확인하세요. Link : https://aljjabaegi.tistory.com/659 SpringBoot + JWT + Security + JPA 인증 구현, JWT란? 해당 포스팅은 인프런의 무료강의를 참고하여 작성되었습니다. Link: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt/dashboard 이해하기 쉽게 설명되어 있으니 참고하시면 좋을 것 같 aljjabaegi.tistory.com 이번 포스팅에서는 개인적으로 생각하는 Access, Refresh Token 사용 방법에 대해 정리를 해보겠습니다. JWT 의 장점 JWT의 가장 큰 장점은 세션.. Programing/Spring Security 2023. 11. 22. Spring Starter security 2.x 3.x 설정 방식 차이 이번 포스팅에서는 Spring 2.x 와 3.x 의 설정 방식의 차이에 대해서 알아보겠습니다. JWT 를 쓰는 환경이고, 같은 설정 코드를 비교해서 어떤 점이 달라졌는지 확인해보겠습니다. 2.x 설정 코드 입니다. @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final JwtAuthenticationEntryPoint jwtAtuthenticationEntryPoint; private final JwtAccess.. Programing/Spring Security 2023. 11. 21. 좋은 UI 설계서란? UI 설계 알짜만 빼먹기 이번 포스팅에서는 10년간 개발자로 일해오면서 느낀, 좋은 UI 설계서란 무엇이며 UI 설계에 담겨야 하는 내용들에 대해 알아보는 시간을 갖어보겠습니다. 따로 UI/UX에 대해 공부한 적은 없고, 100% 경험에서 나온 생각이라는 것을 참고 부탁드립니다. SI 업체에서 일을 하다 보면 짧은 개발 기간 동안에 분석, 설계 부터 개발, 테스트까지 진행을 해야 합니다. 핑계일 순 있겠지만 UI 설계서는 감리 대응용이지 실제 개발에 참고하기는 힘들고 요구사항에 변화하는 내용까지 형상관리 하기는 여간 힘든 작업이 아닙니다. 하지만 말 그대로 UI 설계서는 설계문서 입니다. 건축과 비교하면 '도면' 정도가 되겠네요. 아파트를 짓는데 실제와 다른 도면으로 만든다면 어떻게 될까요? 그리고 짓다가 변경되는 내용을 도면에.. Programing 2023. 10. 6. spring boot + JPA + Tibero 연동 설정 spring boot 2.x와 JPA 설정은 다른 데이터베이스와 같습니다. 이번 포스팅에서는 살짝 차이가 있는 Tibero 연동을 주로 보도록 하겠습니다. (6.x 버전 기준) Tibero의 경우 JDBC는 Tibero 설치 경로의 /client/lib/jar 에 있는 tibero6-jdbc.jar 파일이 필요합니다. 해당 파일을 복사하여 프로젝트의 최상위 libs 폴더에 붙여넣고 gradle 에 jar 파일을 읽을 수 있도록 설정합니다. implementation fileTree(dir: 'libs', include: ['*.jar']) 그리고 spring-boot-starter-data-jdbc 의존성이 추가 되어 있다면 제거를 해줍니다. implementation 'org.springframewor.. Programing/Springboot 2023. 10. 5. @Transactional 알짜만 빼먹기! with JPA @Transactional 이란 @Transactional 은 Spring에서 제공하는 트랜잭션 관리 기능을 적용할 때 사용되며, 특정 메서드를 하나의 트랜잭션 단위로 지정할때 사용하는 어노테이션 입니다. 일반적으로 하나의 메서드에서 복수의 데이터 처리를 할 때 붙여서 사용합니다. 예외가 발생하면 롤백을 해서 데이터 정합성을 유지해야 하기 때문이죠. 이번 포스팅에서는 @Transactional을 사용하는데 꼭 알아야 하는 알짜만 빼먹는 시간을 갖겠습니다. Checked, Unchecked Exception @Transactional을 사용했다는 것은 어떤 예외가 발생했을 때 Rollback 처리를 하기 위해서겠죠? 그럼 어떤 Exception이 발생했을 때 Rollback 처리가 되는지를 알아야 합니다... Programing/Spring 2023. 8. 25. 이전 1 2 3 4 ··· 34 다음 💲 추천 글 반응형