- select
- nginx
- 자바
- join
- Docker
- jpa
- springboot
- sql
- 문자열
- static
- hibernate
- 스프링
- ORM
- DI
- @transactional
- SSL
- AWS
- java
- mysql
- 스프링부트
- string
- PYTHON
- 1차원 배열
- spring security 6
- 데이터베이스
- spring boot
- 프로그래머스
- spring
- spring mvc
- Django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
목록전체 글 (187)
개발하는 자몽
JPA 데이터베이스 스키마 자동 생성개발 서버에서는 가급적 `none`테스트 서버와 스테이징 서버에 `validate` 정도는 괜찮은 듯. 그래도 가급적 `none`을 권장. 혼자 개발하는 환경에서는 `validate` 정도는 괜찮지만, 여러 명이 함께 개발하는 곳에서는 `none`.실제 운영서버에서는 아예 `none`. 수많은 데이터가 있는 운영 서버에서 `ALTER` 쿼리 등을 잘못 입력하면 시스템이 중단 상태가 될 수도 있음. 그래서 가급적 작성한 쿼리가 잘 동작하는지 테스트 서버에서 확인해봐야 함.운영 서버에 스크립트를 반영할 때 가급적이면 쿼리를 다듬어서 넘긴다. 필드와 컬럼 매핑`@Column`의 `unique=true` 제약 조건은 잘 사용하지 않는다. 사용 시 제약 조건 이름이 랜덤 생성되..
이 글은 아래 강의를 바탕으로 공부한 내용을 정리하는 글입니다. 자바 ORM 표준 JPA 프로그래밍 - 기본편 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 🔖목차🔖영속성 컨텍스트엔티티의 상태1차 캐시엔티티 등록 - 쓰기 지연변경 감지(Dirty Checking)SUMMARY 영속성 컨텍스트엔티티를 영구 저장하는 환경논리적 개념, 눈에 보이지 않음`EntityManager`를 통해서 접근`EntityManager`는 엔티티를 조작하고 데이터베이스와의 통신을 수행하는 인터페이스. 엔티티의 영..
Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. 아래 포스팅들을 먼저 보면 좋습니다.Spring Security 6 - Architecture → Security Exception 처리하기[Spring Security] 토큰 기반 로그인/로그아웃 구현하기 이 글의 목표는 Spring Security에서 토큰 기반 인증을 진행할 때 발생한 예외를 `@RestControllerAdvice`로 처리하는 것입니다. 시큐리티 예외 처리 구현Spring Security에서 예외 처리는 다음과 같은 아키텍처로 이루어진다. FilterChainSpring Security는 `FilterChain`으로 구성되어 있으며, 각 필터는 요청을 처리하거나..
Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. 지난 포스팅에서 이어집니다.[Spring Security]토큰 기반 로그인/로그아웃 구현하기 역할과 권한사용자의 역할(role)과 권한(permission/authority)을 구현하여 기능 접근에 제약을 둘 수 있다. 만일 권한이 없는 기능에 접근하면 403 Forbidden이 발생한다. 역할 및 권한 구현 시 다음과 같은 것들을 고려해야 한다. 한 역할은 여러 개의 권한을 가질 수 있다.여러 명의 사용자는 여러 개의 역할을 가질 수 있다. → 다대다 관계역할을 하나의 Entity로 두어 구현할 수 있지만, 이 경우에 고려할 것이 많아진다. 다대다 관계 매핑 → `@ManyToMany`중..

Notice Spring Boot 3.2.5, Spring Security 6.2.5 기반으로 작성한 글입니다. Notice 24.07.06 로그인 구현 부분 `JwtAuthenticationFilter` 잘못된 내용 수정 Spring Security Authentication ArchitectureSpring Security를 기반으로 보안 관련 기능을 구현하기 위해서는 위의 그림을 이해해야 한다. 아래는 로그인을 예시로 한 Spring Security 인증 과정이다. 1. 사용자가 로그인 정보와 함께 인증을 요청한다. 2. `AuthenticationFilter`가 요청을 가로채어 인증에 사용될 UsernamePasswordAuthenticationToken 객체를 생성한다....public ..

Spring Security 6 - Architecture 공식 문서를 번역했습니다. 필요에 의해 설명을 추가한 부분도 있습니다. Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like authentication, authorization, exploit protection, and more. The filters are executed in a specdocs.spring.io 🔖목차🔖Spring Security..
이 글은 아래 강의를 바탕으로 작성했습니다. [지금 무료] 시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL | 쉬운코드 - 인프런쉬운코드 | 백엔드 개발자라면 꼭 알아야 할 데이터베이스와 SQL! 이해하기 쉽게 설명하는 것을 최우선으로 합니다., 데이터베이스 + SQL, 누구나 쉽게! 📕 왕초보도 이해하기 쉬운 DB + SQL 기본기!www.inflearn.com relation in SQLRelational Data Model의 relation은 SQL에서 table을 의미한다(완전히 구분 짓지는 않음). 그리고 SQL에서 relation이란 `multiset of tuples`로 중복된 tuple을 허용한다는 의미이다.`multiset`은 중복을 하용하지 않는 `set`과 달리 중복을..

1. 아래 링크에서 각자 OS 맞는 프로메테우스를 다운로드 → https://prometheus.io/download/ 2. 다운로드 후 압축 풀기3. 압축 푼 폴더에 들어가서 실행 프로그램인 `prometheus.exe` 클릭4. 첫 실행인 경우, 클릭 시 아래와 같은 화면이 나타날 수 있다. 여기에서 `추가 정보`를 클릭.5. `실행` 클릭6. 실행하면 아래와 같은 터미널 창이 뜬다.6. 프로메테우스의 기본 포트 `9090`, http://localhost:9090으로 접속7. 끝!

스프링 부트 - 핵심 원리와 활용 | 김영한 - 인프런김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다. [임베딩 영상] 김영한의 스www.inflearn.com외부설정과 프로필1 오랜만에 Spring을 공부하고 있는데 설정 분리 등을 다 잊어버린 것 같아서 복기 겸 간단하게 정리한다. DB 설정값을 코드 내부가 아닌 개발 서버와 운영 서버에 `application.properties`와 같은 파일을 두어 설정을 주입할 수 있다. 하지만 각 서버에 저장된 설정 파일을 관리하거나 변경 이력을 확인하기 어렵다. 이러한 문제점은 설정 파일을 프로젝트 내부에 포함해서 관리하여 해결할 수 있다. 설..
적용 전 준비할 코드 nginx.conf worker_processes auto; events { worker_connections 1024; } http { ... # for load balancing upstream project_server { server project_server2:8000; server project_server1:8000; keepalive 1024; } server { listen 80; location / { proxy_pass http://project_server/; # upstream 이름 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... } ... ..