반응형 Programing496 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. @MappedSuperclass 에 대해서 알아보자 @MappedSuperclass는 명칭과 같이 상속관계에서 부모 클래스를 매핑 할 때 사용합니다. 기존의 상속관계 매핑에서는 부모 자식 테이블 모두 엔티티로 생성하여 매핑을 하지만, @MappedSuperclass는 부모 클래스는 엔티티로 생성하지 않고 자식 클래스만 엔티티로 생성합니다. 이는 단순히 매핑 정보(엔티티 컬럼)를 상속할 목적으로 사용 됩니다. 예제) 예를들어 위와 같이 MANAGER, EMPLOYEE 테이블이 있다고 할 때, 두 테이블에는 ID와 NAME이 공통으로 있는 것을 보실 수 있습니다. 이 두 컬럼을 부모클래스로 생성해 위의 두 테이블의 엔티티가 상속받도록 합니다. @MappedSuperclass public abstract class CommonEntity { @Id @Colum.. Programing/JPA 2023. 8. 25. 이전 1 2 3 4 ··· 34 다음 💲 추천 글 반응형