Docker- 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.- 다른 도구와 마찬가지로 어떤 문제를 해결하기 위해 만들어 졌다. 서버를 관리 한다는 것은 무엇인가?- 복잡하다. 서버 안의 무엇 하나라도 문제가 생기면 출력이 되지 않는다.- 서버에서 무언가 설치하거나, 수정하는데에 제대로 되지 않는 경우가 많다.- 인프라가 계속 바뀔 수 있다. (AWS -> AZURE -> Google Cloud 등)- 개발환경이 바뀔 수 있다.(node.js -> spring 등) 도커가 등장하고 서버관리/개발 방식이 완전히 바뀌게 되었다.Docker는 어떤 문제를 해결했나?- 서버관리 방식의 변화- 어떤한 프로그램도 컨테이너로 만들 수 있다.- 컨테이너를 하나 만들어두면 어디서든 잘 돌아간다. 가상머신 같은건가..
해당 오류는 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.security:spring-security-crypto' implementation 'org.sprin..
여러 테이블이 하나의 파일첨부 테이블을 사용하다보니 쿼리를 만들 때에 번거로움이 꽤 있다. 이 중에 썸네일로만 사용되는 쿼리를 만들어보려 했다. 변경 전 JPQL @Query("SELECT w FROM Work w JOIN FETCH w.files f " + "WHERE w.id = :id ORDER BY f.cd = 'thumb_nail' desc, f.ord ASC, f.tmplType ASC, f.picOrd ASC") 직관적으로 DB SQL로 만들어보려니 잘 안됐다. 메뉴얼을 봐도 딱히 답이 없는 상황이었다. 여러 방식을 사용했고 만든 결과 @Query("SELECT w FROM Work w JOIN FETCH w.files f " + "WHERE w.id = :id ORDER BY CASE WH..
깨진 창문 이론을 아는가? 아주 번창하고 깨끗한 도시에서 아이들이 야구를 했다. 타자가 친 공이 어떤 건물의 창을 깨게 되었다. 하지만 집주인은 귀찮아서 그 창문을 바꾸지 않고 그대로 두었다. 몇 개월 뒤 그 도시는 점점 더러워 지고 망했다고 한다. 땅에 담배꽁초가 1개라도 떨어지면 흡연자는 버려도 되는 줄 알고 담배를 버리기 시작한다. 곧 그 땅은 재떨이가 되어 더러워 진다. 코딩도 그렇다. 테스트를 하고나면 꼭 지워야한다. 나의 경우 계속 공통 예외처리가 안먹어서 2시간을 고생했는데, 알고보니 @RestControllerAdvice가 어떤 컨트롤러에 또 붙어있었다(결국 2개나 공통처리기를 가지고 있었던 것)........ 예전에 테스트로 만들어 둔 컨트롤러가 이렇게 되다니 너무 충격.. 진짜 바보짓했..
jdk 21을 사용 중에 예외처리를 위해 @RestControllerAdvice를 사용하던 중 오류를 만났다 No enum constant javax.lang.model.element.Modifier.SEALED 엥? 그냥 콘솔에 떡하니 떠버리니 어떻게 할 수 없는 상황.. 검색해보니 딱히 정보도 없다. 없는 정보라도 긁어보니 뭔가 jdk 버전이 이상한 느낌이 들었다. 인텔리제이 -> file -> Project Structure 을 눌러 jdk를 확인해보던 중 language level이 17로 되어있는 것을 발견했다. (17 - sealType..) 오류에 나오는 SEALED과 비슷하단 생각이 들었고, 21버전이 없어 프로젝트 jdk 버전을 17로 낮췄다. 낮춘 뒤 다시 기동해본 결과 제대로 돌아간다..
토이 프로젝트를 진행함에 앞서 예외처리를 근사하게(?) 좀 실무에 가까운 방식으로 만들기 위한 이야기를 적어보려한다. 1. 서블릿 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. - Exception (예외) - response.sendError(HTTP 상태 코드, 오류메시지) try-catch에서 예외를 잡지 않으면 서블릿 밖으로 까지 전달되는데 어떻게 동작 될까? 이런 순으로 전파가 된다. 일단 기본부터 적어본다. - 서버 내부에서 처리할 수 없는 오류 : 500 - 페이지를 찾을 수 없는 오류 : 404 (not find) Exception (예외) WAS(여기까지 전파)
어쩔 수 없는 상황이 아니라면 가급적 사용하지 않는 것이 좋음 사용 법은 단순하다. @Query(value = "select * from member where username = ?" , nativeQuery = true) Member findByNativeQuery(String username); @Query에 nativeQuery를 true로 주면 끝이다. 프로젝션과 함께 사용하기 package study.datajpa.repository; public interface MemberProjection { Long getId(); String getUsername(); String getTeamName(); } @Query(value="select m.member_id as id, m.username..
projections이란 쉽게 말해서 쿼리에 셀렉트 절에 들어갈 데이터(필드) 라고 보면된다고 한다. 엔티티 대신에 DTO를 편리하게 조회할 때 사용 전체 엔티티가 아니라 만약 회원 이름만 딱 조회하고 싶으면? 1. 인터페이스를 하나 만든다. 값을 얻고싶은 메소드만 만들어주기 package study.datajpa.repository; public interface UsernameOnly { String getUsername(); } 2. repository에는 반환형태를 인터페이스 네임으로 붙여준다 List findProjectionByUsername(@Param("username")String username); } 3.메소드를 사용해서 반환한다. @Test public void projections..
- Total
- Today
- Yesterday
- HTTP
- 백엔드 개발자 역량
- 리터럴
- 항해99
- 스프링공부
- exception
- 항해플러스
- SpringBoot
- 향해플러스
- 인터셉터
- 스프링부트
- filter
- 백엔드 개발자 공부
- 향해99
- 예외처리
- Java
- BindingResult
- thymleaf
- jpa api
- 로그인
- rejectValue
- react실행
- ArgumentResolver
- JPA
- reject
- React
- 컨트
- Intercepter
- 향해플러스백엔드
- hypertexttransferprotocol
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |