| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 키움
- 컴포넌트 스캔
- Controller
- jdbc template
- RunWith
- 통합 테스트
- testresttemplate
- 스프링 데이터 JPA
- SpringBootTest
- ResponseEntity
- entity
- 405 METHOD_NOT_ALLOWED
- 정적 컨텐츠
- jdbc
- restTemplate
- 스프링
- 406 NOT_ACCEPTABLE
- 의존관계 자동 주입
- Not Acceptable
- 좋은 객체지향 설계 원칙
- 랜덤 포트
- 가을야구
- 빈 스코프
- JPA
- 기본 생성자
- 스프링 IoC 컨테이너
- 의존성 주입
- 스프링 컨테이너
- 테스트 코드
- Java Reflection API
- Today
- Total
목록전체 글 (54)
코드네임 JY
🍎 SELECT 로 데이터 가져오기 SELECT 내 기본적인 옵션 ✅ SELECT : 컬럼명을 지정하거나, 모든 컬럼을 가져오고 싶다면 Asterisk를 사용해서 원하는 컬럼을 불러올 수 있다. ✅ FROM : 테이블 이름을 적어준다. ✅ WHERE : 원하는 조건의 행 데이터를 불러올 수 있다. ✅ ORDER BY : ASC, DESC 조건을 붙여서 데이터를 정렬할 수 있다. ✅ LIMIT : 데이터의 개수를 원하는 만큼 지정할 수 있다. 데이터를 그룹화해보자 (GROUP BY) GROUP BY 옵션은 '그룹화하여 데이터를 조회' 하는 기능이다. ORDER BY랑 약간 비슷한 것 같아 보이는데..? 그래서 궁금한건 못 참지! 다음 두 개의 쿼리를 비교해보았다. (실습환경은 링크를 참고한다!) SELEC..
🍑 테이블 생성 시 제약 조건 CREATE TABLE User ( id INT, name VARCHAR(10), age TINYINT, introduce VARCHAR(50) ); User 테이블을 만들고 싶다면? 이런 방식으로 간단하게 테이블을 생성할 수 있다. 하지만 이 테이블은 제약 조건이 별로 없다! JPA를 사용해서 프로젝트를 진행할 때 엔티티 클래스 내 속성들에 여러 어노테이션을 붙여서 제약 조건 을 만들 수 있는데, CREATE TABLE User ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(10) NOT NULL, age TINYINT UNSIGNED NOT NULL, introduce VARCHAR(50) ); 이런 식으로 만들어 볼 수 있다!..
🍊 데이터베이스 관련 용어 DDL (Data Definition Language) ✅ CREATE / DROP : 데이터베이스 혹은 테이블 자체를 생성 및 삭제 ✅ ALTER : 테이블 수정 ✅ TRUNCATE : 테이블 초기화 (AUTO_INCREMENT 값도 다시 처음부터!) DML (Data Manipulation Language) ✅ SELECT / INSERT / UPDATE / DELETE : 기본적인 CRUD 기능 수행 DCL (Data Control Language) ✅ GRANT / REVOKE : 데이터베이스 작업에 대한 권한을 수여 및 박탈 ✅ COMMIT / ROLLBACK : 트랜잭션의 작업을 저장 및 취소 후 원래 상태로 복구 🍌 기본적인 자료형 숫자 자료형 ✅ 정수 : TINY..
🍿 소프트웨어 모듈이 가져야 하는 3가지 목적 (Robert C. Martin) 1️⃣ 실행 중에 제대로 동작해야 한다! ✔️ 너무 당연한 소리 🤪 2️⃣ 변경을 위해 존재해야 한다! ✔️ 하나의 클래스가 의존성이 너무 많다면? 코드를 변경하기 어렵다! 3️⃣ 코드를 읽는 사람과 의사소통할 수 있어야 한다! ✔️ 우리의 직관에 위배되지 않도록! 쉽게 읽고 이해할 수 있어야 한다! ✔️ 영화관 객체가 있고 손님 객체가 있는데, 영화관 객체가 손님 객체에 접근해서 마음대로 소지품이라는 항목을 뜯어본다면? ✔️ 소지품 항목은 손님 객체가 직접 다루는 것이 우리의 직관에 위배되지 않는다! 🍩 의존성 (Dependency) 의존성은 '변경' 과 관련되어 있다! 그래서 의존성은 '변경에 대한 영향' 을 나타낼 수 ..
🥪 AWS 사용하기 대체로 서버 환경을 하나 만들어서 배포하는 것이 일반적인데, 그래서 AWS라는 클라우스 서비스를 많이 사용한다. 집에 PC가 많다면 24시간 PC를 구동시켜 서버를 돌려도 되지만..! 우리는 클라우드 서비스를 사용할 것이요! ☁️ ☁️ Github Actions를 통해서 CI/CD를 진행할 때 사용할 AWS 서비스는 크게 3가지다. 저장공간을 제공해주는 S3(Simple Storage Service), 어플리케이션 배포를 도와주는 CodeDeploy, 그리고 우리가 만든 결과물을 올릴 서버 인스턴스인 EC2(Elastic Compute Cloud)가 있다! 이번 포스팅에서 진행하는 전체적인 과정을 위 그림에 정리했다! 글로 조금 풀어서 다시 정리하자면.. 1️⃣ 개발자가 깃허브에 코드..
🍿 빌드와 배포 빌드 (컴파일 + 링크) ✅ 컴파일 : 작성한 소스 코드를 바이너리 코드로 변환하는 과정 ✅ 링크 : 컴파일 결과물에서 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해주는 과정 → 빌드는 소스 코드를 실행 가능한 소프트웨어 산출물(jar, war 등..)로 만드는 일련의 과정이다! 배포 ✅ 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치하는 것 ✅ 빌드하고 생성된 jar 또는 war 파일을 웹 어플리케이션 서버에 올리는 것 여기까지는 알겠다! 근데 하나의 프로젝트를 만들어서 지속적으로 서비스를 제공하려면.. 기능을 만들고, 테스트 코드 작성하고, 검증이 완료되면 Github에 코드를 올리고.. 하는 등의 과정을 반복해야하는데, (매일 내가 그 작업만 하고 있을 수는 ..
🥪 구현 기능 ✅ 기본적인 CRUD 기능만 구현하는데 초점 🍟 실행 화면 1️⃣ 초기 Home 화면 2️⃣ 등록(POST) 화면 3️⃣ Home 화면 (DB에 값이 있다면 전체 목록을 가져옴) 4️⃣ 제목을 누르면 들어갈 수 있는 수정(UPDATE) 화면 5️⃣ 삭제(DELETE) 화면 6️⃣ 수정(UPDATE) 및 삭제(DELETE)가 반영된 Home 화면 7️⃣ 로컬 데이터베이스 내역 🍕 이번 프로젝트로 얻은 부분 💟 JPA에서 Entity는 기본 생성자를 가져야 한다! ☑️ Deserialize(JSON to Object), Serialize(Object to JSON) 과정 이해하기! 💟 처음 컨트롤러 테스트 코드를 작성해야 할 때 마주했던 어려움! ☑️ 컨트롤러 테스트의 목적? → 통합 테스트로..
이번에는 '405 Method Not Allowed' 에러 코드를 만나버렸다.. 🙄🙄 어떻게 된 영문인지.. 알아보도록 하자..! 🍫 405 Method Not Allowed 원인 CRUD 중, UPDATE 부분을 구현하고 있을 때였다. GET과 POST의 동작 방식을 공부했고, 그것을 바탕으로 테스트도 완료했다. 오 그러면? 데이터를 저장하고, id를 찾은 다음, postForEntity로 수정된 객체를 올리면 되지 않나? 라고 생각해서 코드를 짜봤다. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class MusicAPIControllerTest { @LocalServerPort private int port;..
스프링 공부 도중, '406 Not Acceptable' 이라는 에러 코드를 만나버렸다.. 😱😱 하지만 구글이 있다면? 절 대 로 무섭지 않지. 공부한 내용을 블로그에 정리해보도록 하겠다! 🍤 406 Not Acceptable 원인 ResponseEntity responseEntity = restTemplate.getForEntity(url, MusicResponseDto.class); assertThat(responseEntity.getStatusCode()).isEqualTo(OK); // 406 NOT_ACCEPTABLE 에러 코드의 시발점(욕 아님 🥲🥲)은 바로 여기서부터 시작되었다. responseEntity 변수에 getStatusCode( ) 메서드를 사용하면 Status Code를 확인할 ..
ResponseEntity responseEntity = restTemplate.postForEntity(url,requestDto,Long.class); 진짜 요즘 이 코드 한 줄로 엄청나게 많은 공부를 하고 있다. 책을 보면서 따라쳐볼 때는 몰랐지.. 이렇게까지 많은 것이 담겨 있을 줄이야.. 진짜 잼민 펀치가 필요할 것 같다. 옥상,, 아니 카페로 따라와,,, 🥓 RestTemplate 사용해서 객체 GET, POST 해보기 이전 포스팅에서 한 번 다룬 내용이다. 그 때보다 더 구체적으로 공부해보았다! 참고로, 밑에서 사용할 restTemplate은 TestRestTemplate 객체의 인스턴스이다! class MusicAPIControllerTest { @Autowired private TestR..