전체 글
[Entity] 중복데이터 저장 방지 (Unique Key, Index)
| 관련 SQL 개념 (1) Unique Key : 중복 데이터 저장을 방지하기 위한 제약조건 - 단일 칼럼 뿐 아니라, 복합 칼럼을 지정할 수도 있다. - 아래와 같이 복합 키를 생성할 경우, DB 조회 속도를 향상시킬 수 있다. -- MySQL 기준 create table member( email varchar(50), name varchar(255), unique key member_uk_email (email, name) ) - 중복 데이터 저장을 막기 위한 방법으로 아래 두가지를 사용할 수 있다. * 단순 insert into 문의 경우 에러를 발생하지만, 아래 두 가지는 에러를 발생시키지 않는다. INSERT IGNORE unique key가 걸린 칼럼에 중복 데이터가 이미 있는 경우 삽입 X..
[스프링 시큐러티] 스프링 시큐러티 자료 모음 (수정중)
1. 개념 https://flyburi.com/584 [SpringSecurity] Authentication(인증) 관련 클래스와 처리 Spring Security에 대해 큰 흐름은 알지만, 처음부터 적용하는게 아니면 어떤 권한을 주고 권한 체크하는 로직만 추가하거나 수정하며 생각없이 쓰게 되는데, 어떤 흐름으로 되는지 전보다 좀 더 살 flyburi.com 2. 다수의 회원 타입(ex. 판매자, 구매자)에 대하여 시큐러티 분기 필요할 때 https://github.com/HomoEfficio/dev-tips/blob/master/Spring-Security-Multiple-UserDetailsService-Authentication.md GitHub - HomoEfficio/dev-tips: 개발하다..
[MySQL] Memo
W3School에서 제공하는 MySQL 자료를 보고 있다. 기초적인 내용들을 깔끔하게 설명해주고 있어서 메모해두었다. - 현재 Data Type에 대해서 보고 있는 중.. https://www.w3schools.com/mysql/mysql_datatypes.asp MySQL Data Types W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more. www.w3schools.com
[스프링] Build.Gradle & application.yml 관련 메모
1. 운영 서버와 테스트 서버의 DB 설정을 나누고 싶을 때 (1) 먼저 application.yml 에서 개발/운영 환경에 따라 DB 설정을 나눠준다. https://1minute-before6pm.tistory.com/12 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide#profile-groups (2) 그리고 나서 아래와 같이 Edit Configuraton의 Active prifiles를 설정한 profile 이름으로 바꾼다. ㄴ [추가] Build.Gradle 의존성에 대한 이해 - 너무나 복잡하게 profile을 쓰고 db를 application.yml에서 나눴는데, 그럴 필요가..
[Transaction] Transaction에 대한 이해 (& 스프링의 @Transactionl)
| 개요 - 서비스에서 @Transactional 을 사용할 때와 사용하지 않을 때 수정과 삭제 시 차이를 보이는 걸 경험했다. @Transactional update delete 사용 repository.save() 불필요 repository.delete() 시 삭제됨 미사용 repository.save() 필요 repository.delete() 시 삭제되지 않음 - 더불어 테스트에서 아래와 같이 @Transactional을 작성할 때, DB에 영구반영이 되지 않는 걸 확인했었다. // 아래는 TEST 코드 @SpringBootTest @Transactional public class JpaMemoRepositoryTest{ // 테스트 작성 } - 왜 그럴까? (1) 수정 시 save하지 않아도 수..
[JSON 파싱] ObjectMapper, Simple-json
1. ObjectMapper - Jackson 라이브러리를 활용한 것이라고 한다. - 수업에서는 test 코드를 작성할 때 ObjectMapper를 사용했다. https://why-dev.tistory.com/266 [스프링] Controller Test : Json-Path와 Jackson라이브러리 | 개요 - Controller Test에서는 URI를 통해 전송되는 HTTP 요청이 MVC 모델을 거친 후 응답하는 과정이 정상적인가를 확인한다. - 이 과정에서 스프링은 ObjectMapper를 통해 Json Object로 문자열을 파싱하는 J why-dev.tistory.com 2. simple-json 사용하기 - gradle의 경우 build.gradle에 아래를 넣어준다. implementatio..
삭제 플래그는 언제 써야 할까?
이 포스트를 DB 카테고리에 넣어야할지, REST API 카테고리에 넣어야할지 모르겠다. 갈 수록 카테고리들이 서로 연관되다보니 그냥 하나로 합쳐야하나 고민이 된다... 데이터를 삭제할 때에는 1. 논리 삭제 2. 물리 삭제 두 가지 방법을 사용할 수 있다. * 관련 포스팅 : https://server-engineer.tistory.com/323 링크에선 물리 삭제는 일반적으로 개인정보보호가 필요한 경우에 사용한다고 했는데, 실제로 현장에 있을 때 회원 정보와 같은 민감 정보는 법에 위촉되지 않는 선에서 약관에 따라 일정 기간 동안 가지고 있다가 시간이 지나면 영구 삭제하는 것으로 알고 있다. 논리 삭제는 플래그 변수를 디비에 하나 추가해서 이게 삭제된 것임을 알려주는 것인데, 전에 기획을 할 때 개발..
[스프링] @AutoWired 동작 원리 및 DI injection 관련 설명 모음
1. @AutoWired 동작원리 https://beststar-1.tistory.com/40 @Autowired의 동작원리 @Autowired란? 의존관계 주입(DI)을 할 때 사용하는 어노테이션(Annotation)이며, 의존 객체의 타입에 해당하는 빈(Bean)을 찾아 주입하는 역할을 한다. 💡 의존관계 주입에 대해서는 IoC(Inversion of Control, beststar-1.tistory.com 2. 생성자 주입과 관련한 설명 https://jackjeong.tistory.com/41 [Spring] 생성자 주입 vs 필드 주입 (@Autowired) 안녕하세요~ 잭코딩입니다! 이번에는 스프링 프레임워크에서 의존성을 주입하는 방법을 살펴보고 어떤 방식으로 주입하는 게 좋은지 살펴볼까요? ..
Redis에 대한 정보 모음
1. 레디스 개념 및 특징 https://www.youtube.com/watch?v=Gimv7hroM8A https://www.youtube.com/watch?v=mPB2CZiAkKM - 이탈리아의 한 해커가 MySQL 로 작업 중 DB 처리 속도가 너무 느린 것을 보고 레디스를 만들었다. - REDIS : Remote (외부에 있는) Dictionary (Key-Value형태) Server (서버) - 공식문서에 따르면, Redis는 인메모리 기반의 data structure store로, db/cache/message broker, streaming engine으로 사용될 수 있다고 한다. * 단, 많은 개발자들은 Redis를 Store가 아닌 Cache라고 분류한다. * Redis는 지속성을 보장하..