Java 16

@Transactional 란?

@Transactional 메서드나 클래스에 적용되어 해당 메서드나 클래스에서 수행되는 모든 작업을 하나의 트랜잭션으로 묶어주는 역할 해당 메서드나 클래스에서 수행된 작업 중 어떤 하나라도 실패하는 경우, 모든 작업이 취소되어 데이터 일관성이 유지된다. Transaction ACID 1) 원자성 (Atomicity) - 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리 - 모두 성공하거나 모두 실패 2) 일관성 (Consistency) - 트랜잭션은 일관성 있는 데이터베이스 상태를 유지 3) 격리성 (Isolation) - 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리 4) 영속성 (Durability) - 트랜잭션을 성공적으로 마치면 결과가 항상 저장 @ 애너테이션 속성 * 접근제어..

Java 2023.05.01

[Spring] DAO, DTO, VO, Record 개념 및 차이점

DAO 의 경우 데이터 엑세스를 위한 객체 DTO, VO, RECORD 의 경우 데이터를 표현하기 위한 객체 DAO ( Data Access Object ) 데이터 액세스 객체 DB에서 데이터를 가져오거나 DB에 데이터를 저장하는 등의 작업을 수행하는 객체 비즈니스 계층과 DB 간의 인터페이스 역할 DTO ( Data Transfer Object ) 데이터 전송 객체 데이터를 효율적으로 전송하기 위한 객체 일반적으로 DB에서 가져온 데이터를 다른 계층에서 사용하기 적합한 형식으로 변환하여 전송하는데 사용 DTO 속성은 getter / setter 메서드로 구성 데이터 전송에만 사용 VO ( Value Object ) 값 객체 데이터의 불변성을 보장하고 상태를 가지지 않음 보통 DB의 한 행 또는 여러 행..

Java 2023.04.17

[Spring] Controller Request 값 @valid 이용하여 검증하기

Controller에서 값을 받아 일일이 값을 검증해주다보니 소스가 길어지고 가독성이 안좋아지는 것 방지하고자 @valid를 사용하게 되었다. 1. build.gradle 에 validation 의존성 추가 dependencies { implementation('org.springframework.boot:spring-boot-starter-validation') } 2. Request Class 에 검증할 어노테이션 추가 @Getter @FieldDefaults(level = AccessLevel.PRIVATE) public class CreateUserRequest { @NotBlank(message = "아이디를 입력해주세요.") String id; @Min(value = 8, message = "..

Java 2023.04.16

CI/CD란? 지속적 통합, 지속적 제공(배포)

오늘은 유튭보고 배운 내용을 기록 1. CI/CD 란? 애플리케이션 개발부터 배포때까지 모든 단계들을 자동화를 통해 효율적으로 빈번히 배포할 수 있도록 하는 것 2. CI Continuous Integration 지속적인 통합 코드변경 사항을 주기적으로 빈번히 머지해야함 통합을 위한 단계(빌드, 테스트, 머지)의 자동화 장점 개발 생산성 향상 결함, 문제점 등을 빠르게 발견, 버그 수정에 용이 코드 퀄리티 향상 3. CD CD는 두가지로 나뉜다. Continuous Delivery 지속적인 제공 => 검증이 완료되면 수동적으로 배포하는 것 Continuous Deployment 지속적인 배포 => 검증이 완료되면 자동적으로 배포하는 것 배포 순서 (이 과정에서 Build, Test => CI / Depl..

Java 2021.09.01

[Spring Boot] /index.html 파일 static 폴더가 아닌 templates 폴더에서 호출되게 하는 방법

Spring Boot 프로젝트를 실행하게 되면 /static/index.html이 호출됩니다. 근데 저는 애초부터 templates 폴더에서 호출되게 하고싶어서 어떤 방법이 있을까하다... @Controller public class MainController { @GetMapping(value = "/") public String loadPage() throws Exception { return "/index.html"; } } MainController에 / 로 접근하는 모든 것을 index.html로 보냈습니다. 그러면 templates 폴더 하위에 있는 index.html이 호출돼요!

Java 2021.06.24

[Spring Boot] SpringBootServletInitializer 상속하는 이유

Spring Boot 프로젝트를 생성해보면 프로젝트명+Application.java 가 자동으로 생성되어있는 것을 볼 수 있습니다. 프로젝트가 시작되는 시점에 실행되는 부분이죠! 소스를 보면 SpringBootServletInitializer 클래스를 상속 받은 것을 볼 수 있는데 왜 상속받는지 알고 사용하는 것이 좋겠죠!! 그래서 저도 한번 찾아봤어요~ 우리가 Spring에서 개발하다보면 web.xml에 DispatcherServlet을 등록하는 작업(servlet-mapping...)을 했었는데 Servlet 3.0으로 업데이트 되면서 web.xml에 작업 없이도 배포가 가능해졌다고해요. web.xml 설정을 WebApplicationInitializer 인터페이스를 구현하여 대신할 수 있고, Spr..

Java 2021.06.24

[Spring Boot] application.properties 설정하기

2021.06.15 - [Java] - [SpringBoot] 프로젝트 생성하기 [SpringBoot] 프로젝트 생성하기 안녕하세요~ SpringBoot 프로젝트 생성하는 방법에 대해 포스팅해볼게요. 일단 STS를 실행해주세요~ 프로젝트 [File] - [New] - [Spring Starter Project] 클릭 프로젝트 설정 Name : 프로젝트명을 설정해줍니다.. ddol.tistory.com 안녕하세요 :) 지난 SpringBoot 프로젝트 생성에 이어 application.properties에서 간단한 설정하는 방법에 대해 소개하려고합니다. 프로젝트를 생성하고 src/main/resources/application.properties에 들어가보면 이렇게 비어있는 것을 볼 수 있습니다. 이제 여..

Java 2021.06.18

[Spring Boot] 프로젝트 생성하기

안녕하세요~ SpringBoot 프로젝트 생성하는 방법에 대해 포스팅해볼게요. 일단 STS를 실행해주세요~ 프로젝트 [File] - [New] - [Spring Starter Project] 클릭 프로젝트 설정 Name : 프로젝트명을 설정해줍니다. Type : Maven / Gradle 두 종류가 있어요. 저는 Maven으로 선택! Packaging : Jar / War 로 저는 Jar로 설정! Java Version : 8 / 11 / 16 -> 자바 버전은 1.8로 선택합니다. Language : Java / Kotlin / Groovy -> Java Group : 그룹명은 원하시는 대로 넣으시면 됩니다. Artifact : 위 Name을 변경하면 같이 바껴요! 프로젝트명 Version : 프로젝트..

Java 2021.06.15

[JAVA] FCM 프로젝트 생성 및 JAVA에서 PUSH 보내는 방법

안녕하세요 :> FCM을 통해 APP으로 PUSH 보내는 방법에 대해 설명해보려고합니다. 정말이지 게을러서 아무것도 안하다가 FCM에 대해 면접 질문을 받아 다시 기억을 되짚어봤어요. FCM이란, Firebase Cloud Messaging의 줄임말로 사용자 디바이스에 설치된 앱 단위로 메시지(푸시)를 전송할 수 있는 서비스 입니다. https://console.firebase.google.com/u/1/ 일단 FCM에 들어가게 되면 프로젝트를 추가할 수 있게 나옵니다. 프로젝트 추가를 눌러주세요. 프로젝트 명을 지정하여 계속 클릭해주세요. 이것도 계속 클릭 대한민국 선택 후 프로젝트 만들기 프로젝트가 생성 중입니다 두구두구 이제 이렇게 되면 FCM 프로젝트가 생성이 되었어요! iOS, Android 종..

Java 2021.06.14

[JAVA ] File Upload 하는 방법

안녕하세요 : > 오늘은 jsp를 통해 java에서 파일 업로드 하는 방법을 소개해드리겠습니다. jsp 업로드 javascript function f_fileUpload(){ var frmData = new FormData($('#form_file')[0]); $.ajax({ method: "POST", enctype: 'multipart/form-data', url: "/fileUpload.do", async: true, processData: false, contentType: false, cache: false, timeout: 600000, data: frmData, success: function (response, textStatus, jqXHR) { alert("저장되었습니다"); }, er..

Java 2021.04.09