[TIL]이노베이션 캠프 8일차
1. 과제 진행 상황 조별과제는 알고리즘(코딩테스트) 28문제 해결하고 스터디하기 -> 조원 4명이 7문제씩 자기 담당 문제 정해서 해결하고 어려운부분 공유하는 방법으로 진행 개별로 코드짜고 깃
k-sky.tistory.com
[TIL]이노베이션 캠프 9일차
1. 개발 진행 상황 2. 개발 중 발생한 이슈와 해결 3. 새로 배운 것 이클립스에서 자바 프로그램 작성하는 순서 프로젝트 생성: 메뉴 File -> New -> Java Project 클래스 생성: 프로젝트 이름 위 우클릭 ->
k-sky.tistory.com
[TIL]이노베이션 캠프 10일차
1. 개발 진행 상황 2. 개발 중 발생한 이슈와 해결 3. 새로 배운 것 메서드의 호출 메서드명(값1, 값2,...); //메서드를 호출하는 방법 print99danAll(); / void print99danAll()을 호출 int result = add(3,5); /..
k-sky.tistory.com
TIL]이노베이션 캠프 11일차
2주차 개인과제 Java로 주어진 요구조건에 맞는 클래스 설계 1. 과제 진행 상황 자바 기본 문법에 대해 계속 공부중 공부한것과 구글링을 통해 과제 완성 https://github.com/kimskyyyy/sparta/tree/main/week2 G.
k-sky.tistory.com
[TIL]이노베이션 캠프 12일차
1. 개발 진행 상황 2. 개발 중 발생한 이슈와 해결 3. 새로 배운 것 JPA가 무엇인가요? - JPA(Java Persistence API) 자바 객체와 데이터베이스 테이플간의 매핑처리를 하는 ORM(Object Relational Mapping)기술 -..
k-sky.tistory.com
[TIL]이노베이션 캠프 13일차
1. 개발 진행 상황 2. 개발 중 발생한 이슈와 해결 Web server failed to start. port 8080 was already in use에러 -> 포트가 이미 실행 중일 때 스프링을 Run하면 발생하는 에러 Web server failed to start..
k-sky.tistory.com
[TIL]이노베이션 캠프 14일차
1. 개발 진행 상황 2. 개발 중 발생한 이슈와 해결 ARC URL연결 문제 The requested URL can’t provide a secure connection The URL sent an invalid response. Learn more about this problem. net::ERR_SSL_..
k-sky.tistory.com
<복습>
1. 인텔리제이 > New Project
- Group: com.sparta
- Artifact: week00
- Type: Gradle
- Language: Java
- Java Version: 11
- Lombok
- Spring Web
- Spring Data JPA
- H2 Database
- MySQL Driver
2. main > java > com.sparta.week00 > Week00Application.java를 Run하고 크롬에서 http://localhost8080 접속하여 연결 확인
3. Repository 만들기
src > main > java > com.sparta.week00 > domain 패키지 생성
> Memo.java, Timestamped.java, MemoRepository(인터페이스), MemoRequestDto.java 순으로 생성
Memo.java
@NoArgsConstructor // 기본생성자를 만듭니다.
@Getter
@Entity // 테이블과 연계됨을 스프링에게 알려줍니다.
public class Memo extends Timestamped { // 생성,수정 시간을 자동으로 만들어줍니다.
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String contents;
public Memo(String username, String contents) {
this.username = username;
this.contents = contents;
}
public Memo(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
}
Timestamped.java
@MappedSuperclass // Entity가 자동으로 컬럼으로 인식합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/변경 시간을 자동으로 업데이트합니다.
public class Timestamped {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime modifiedAt;
}
MemoRepository.java 인터페이스
public interface MemoRepository extends JpaRepository<Memo, Long> {
List<Memo> findAllByOrderByModifiedAtDesc();
}
MemoRequestDto.java
@Getter
public class MemoRequestDto {
private String username;
private String contents;
}
4. Service 만들기
src > main > java > com.sparta.week00 > service 패키지 생성 > MemoService.java 생성
MemoService.java
@RequiredArgsConstructor // final로 생성된 것을 필수로 꼭 넣어주도록 도와줌
@Service //Service라는것을 스프링에게 알림
public class MemoService {
private final MemoRepository memoRepository;
// final MemoRepository를 필수로 사용해야한다고 알리는 것
// find를 하기 위해서는 Repository필요하기 때문에 생성
@Transactional // DB반영 하라는 어노테이션
public Long update(Long id, MemoRequestDto requestDto) {
// 반환타입: Long, 메소드명: update, 재료:(기본키)id와 변경시킬 내용에 대한 정보 MemoRequestDto형 변수명 requestDto
Memo memo = memoRepository.findById(id).orElseThrow(
// find를 하기 위해서는 Repository 필요
() -> new IllegalArgumentException("아이디가 존재하지 않습니다.")
// NullpointerException: 포인터가 가르키는것이 없다
// IllegalArgumentException : Argument=파라미터(전달받는 값)잘못 됨
);
memo.update(requestDto);
return memo.getId();
}
}
Memo.java에 update 메소드 추가
public void update(MemoRequestDto requestDto) {
// 반환값 없어도 되서 void 사용, Service에서 전달 받기로 한 값 MemoRequestDto
this.username = requestDto.getUsername(); // 전달 받은 Dto의 값을 findbyId로 찾은 Memo안에 넣음
this.contents = requestDto.getContents();
}
5. Controller 만들기
src > main > java > com.sparta.week00 에 controller 패키지 생성 > MemoController.java 생성 >
Create/Read/Delete 코드 추가
@RequiredArgsConstructor
@RestController
public class MemoController {
private final MemoRepository memoRepository;
private final MemoService memoService;
@PostMapping("/api/memos")
public Memo createMemo(@RequestBody MemoRequestDto requestDto)
{Memo memo = new Memo(requestDto);
return memoRepository.save(memo);
}
@GetMapping("/api/memos")
public List<Memo> getMemos() {
return memoRepository.findAllByOrderByModifiedAtDesc();
}
@DeleteMapping("/api/memos/{id}")
public Long deleteMemo(@PathVariable Long id) {
memoRepository.deleteById(id);
return id;
}
@PutMapping("/api/memos/{id}")
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
memoService.update(id, requestDto);
return id;
}
}
6. ARC로 기능 확인
기능 | Method | URL | |
(조회) 빈 목록 반환 | GET | http://localhost:8080/api/memos | |
(생성) 신규 메모 생성 | POST | http://localhost:8080/api/memos | Headers: Content-Type - application/json |
(조회) 신규 메모 조회 | GET | http://localhost:8080/api/memos | |
(삭제) 신규 메모 삭제 | DELETE | http://localhost:8080/api/memos | |
(조회) 빈 목록 반환 | GET | http://localhost:8080/api/memos/1 |
신규 메모 생성 Body
{
"username": "avfnek2",
"contents": "첫 번째 메모"
}
<2주차 키워드>
- 객체지향 프로그래밍(Object-Oriented Programming, OOP): 속성과 기능(동작)을 가진 현실 세계의 객체를 기본 단위로하여 이들의 상호작용으로 서술하는 방식
- JVM(Java Virtural Machine): 자바 가상 머신, java는 특정 OS에 종속적이지 않음. 그 이유는 OS위에 JVM에서 java를 인식하고 실행하기 때문임
참고 레퍼런스
[JAVA] JVM이란? 개념 및 구조 (JDK, JRE, JIT, 가비지 콜렉터...)
JVM이란 무엇인가 Java Virtual Machine의 줄임말. 직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다. Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되
doozi0316.tistory.com
https://lxxyeon.tistory.com/86
객체지향(OOP) VS 절차지향(PP) 프로그래밍
객체지향, 절차지향 프로그래밍의 정의, 특징, 장단점, 종류에 대해 알아보고 비교해보자 그전에, 🔥 간단 이해 🔥 ✔️ 절차식 방법은 프로그램을 위 그림같이 데이터와 기능(함수)으로 나누
lxxyeon.tistory.com
- 2주차 회고
1주차 보다는 난이도가 낮음
-> but.....조금 더 수월한건 맞지만 알고리즘과 자바 둘 다 따라가기 약간 벅찼다..
코딩 테스트 제출 미완료
-> 개별 과제에 집중하느냐 알고리즘 공부를 놓치고 있기도했고... 어쨋든 java를 그냥 내가 못한다.. 다음주에는 java에 시간 더 써야지...
'개발 일지' 카테고리의 다른 글
[TIL]이노베이션 캠프 16일차 (0) | 2022.08.16 |
---|---|
[TIL]이노베이션 캠프 15일차 (0) | 2022.08.15 |
[TIL]이노베이션 캠프 14일차 (0) | 2022.08.14 |
[TIL]이노베이션 캠프 13일차 (0) | 2022.08.13 |
[TIL]이노베이션 캠프 12일차 (0) | 2022.08.12 |