728x90

jpa 76

JWT 초기 설정

프로젝트 생성 자바 버전은 11로 하였고 아래의 Dependencies를 추가해줍니다. Spring Web Spring Security Spring Data JPA H2 Database Lombok Validation 테스트 컨트롤러 생성 해당 프로젝트가 잘 작동하는지 테스트 하는 컨트롤러를 만들어줍니다. @RestController @RequestMapping("/api") public class HelloController { @GetMapping("/hello") public ResponseEntity hello(){ return ResponseEntity.ok("hello"); } } Postman으로 GET요청을 했을때 401인증오류가 뜨는 것을 볼수 있습니다. SecurityConfig를 생성..

JWT 인증 2022.09.16

AOP - 관점 지향 프로그래밍

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2022.09.13

Java 엑셀 파일(Excel) 다운로드

개발을 진행하다 보면 고객의 요청으로 특정 데이터를 추출하여 엑셀 파일을 생성하여 다운로드 받는 기능을 만드는 일이 종종있습니다. 엑셀 파일 생성 후 다운로드의 경우 크게 어렵지 않으며 자바에서 셋팅을 어떻게 해주냐에 따라 폰트, 글자 크기, 글자 배치 등을 설정할 수 있습니다. 오늘은 간단한 방법으로 자바 엑셀파일 다운로드에 대해서 알아보겠습니다. 1. GET 방식의 API 생성 @GetMapping("/get/excel/users") public void excel(HttpServletRequest req, HttpServletResponse res) { try { // 엑셀 다운로드 함수 TestUtil.excelDownload(res); }catch(Exception e) { e.printStac..

JAVA 2022.09.05

JAVA stream filter 정리

Filter 스트림내 요소에 대해서 필터링하는 작업 준비하기 java stream을 사용하는데 아직 미숙한것 같아서 여러가지 예제를 사용해보며 연습해보자. sample data (Human) 번호 이름 가진돈 생일 1 jojae 2900 1991-02-26 2 haha 1000 2003-03-02 3 arabia 30000 2001-04-06 4 cici 150 1982-05-16 5 zzang 40000 1910-06-26 6 ssu 200000 2012-07-11 7 kuku 150 1991-02-27 public class Human { private Long idx; private String name; private Integer money; private LocalDate birth; } 기본..

JAVA 2022.09.01

Java8 Optional 의 ifPresent 활용

자바 8에 추가된 Optional이 제공하는 ifPresent를 사용해서 null을 확인하는 if 문을 줄일 수 있다. Member member = memberRepository.findById(id); if (member != null) { if (member.isAdmin()) { member.addAdminPermissions(); } else { member.addDefaultPermissions(); } } 이런 코드가 있다고 가정해보자. memberRepository가 제공하는 findById를 Member 타입을 리턴하는데 이 값을 null일 수도 있기 때문에 if (member != null)과 같은 코드가 존재한다. 이 코드에 이제 Optional을 적용한 다음코드를 살펴보자. Membe..

JPA 2022.09.01

(MySql) workbench에서 쿼리 출력 후, 한글 안깨지고 엑셀(xlsx) 파일로 추출

1. mySql workbench를 실행한다. 2. 원하는 쿼리를 쿼리 칸에 붙여넣는다. 3. 그리고 좌측 상단에 번개모양 버튼을 눌러 쿼리를 실행한다. 4. 쿼리 결과가 나오면 Export 버튼을 클릭해서 csv 파일로 저장한다. 5. 저장한 파일을 우측 클릭해서 [연결 프로그램] → [메모장]으로 켜준다. 6. [파일]->[다른이름으로 저장]을 클릭한다. 이 창에서 [파일 형식]을 txt에서 모든 파일로 변경해주고 [파일 이름] 뒤에 .csv를 붙여준다. 그리고 인코딩이 UTF-8로 되어있는데 ANSI로 변경해준다.(안그러면 한글이 깨짐) 7. excel이 되는 컴퓨터에서 파일을 연다. 8. [파일]->[다른 이름으로 저장]을 누르고, [파일 형식]을 CSV에서 Excel 통합 문서로 변경해준다. 9..

CS지식 2022.09.01

(Rest API 개발)PUT과 PATCH의 차이점

HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든 것을 업데이트 한다. PATCH : 리소스의 일부를 업데이트 한다. 아래와 같은 회원이라는 리소스가 있다. 회원 (member) 1 이름 (name) 애용이 나이 (age) 10 성별 (gender) M 아래와 같은 요청을 보내면 PUT /members/1 { name : "홍길동", age : 19, gender : "M" } 회원 (member) 1 이름 (name) 홍길동 나이 (age) 19 성별 (gender) M 위와 같이 변한다. 이번에는 나이와 성별를 빼고 요청을 보내면 PUT /..

Rest API 2022.08.31

(스프링부트 Rest API) 다건 삭제 관련

Bulk delete 일반적으로 HTTP 메소드를 사용할 때 데이터 위치는 아래와 같습니다. GET, DELETE => header에 데이터 포함 POST, PUT => body에 데이터 포함 방법 1 첫 번째 방법은 구분자를 사용해서 path로 데이터를 넘기는 방법입니다. DELETE /resources/1;2;3;4 DELETE /resources/1+2+3+4 DELETE /resources/1,2,3,4 방법 2 두 번째 방법은 QueryString을 사용하는 방법입니다. DELETE /resources?id=1&id=2&id=3&id=4 방법 3 세 번째 방법은 POST나 PUT을 사용하는 방법입니다. 첫 번째, 두 번째 방법의 문제점은 길이의 제약이 있다는 점입니다. 브라우저마다 URL의 Ma..

Rest API 2022.08.30

@Transactional(rollbackFor = Exception.class) 에 대해

1. 서론 초반 @Transactional 어노테이션에 대해 자세히 알아보지 않고, 막연히 롤백때 사용한다고 하여 SQL C,U,D 를 할 때마다 메소드 위에 붙여서 사용하곤 하였다. 하지만, 내 코드를 보신 선임께서 단지 @Transactional 만 붙이면 롤백이 안되고, @Transactional(rollbackFor = Exception.class) 을 붙여야 된다고 알려주셨다. 여기에서 뭐 때문인지에 대해 호기심에 트랜잭션에 대해 찾아보다가 내가 생각했던 것 보다 더 많은 기능들이 존재한다는 것을 알고 정리해보려 한다. 2. 트랜잭션이 뭐지? 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, commit 을 자동으로 수행해준다. 예외 발생 시 rol..

JPA 2022.08.26

물리삭제(hard delete)와 논리삭제(soft delete)

데이터베이스에서 데이터를 삭제하는 방법에는 물리삭제와 논리삭제가 있으며 그중 하나를 선택하여 사용합니다. 물리삭제는 SQL의 DELETE 명령어를 사용하여 직접 데이터를 삭제하는 방법입니다. 삭제 대상인 데이터가 필요없을때 (추후에 조회할 필요가 없을때) 사용합니다. 논리삭제는 SQL의 UPDATE 명령어를 사용하여 삭제 여부를 알수 있는 컬럼에 데이터가 삭제되었다는 값을 넣어서 표현합니다. 삭제를 해도 삭제하기전의 데이터를 보관해야 할 경우에 논리삭제를 사용합니다. 물리삭제와 논리삭제의 예시 배송지 정보가 다음과 같이 3개가 있다고 하면 id 회원 id 수령인 이름 수령인 연락처 기본 배송지 여부 우편번호 주소 상세주소 삭제여부 1 1 김태하 010-1234-5678 1 01234 서울특별시 동작구 어..

CS지식 2022.08.25
728x90