TIL 2021.03.09

Kyu·2021년 3월 9일
1

TIL

목록 보기
58/322

이 부분을 나도 MainController 로 빼고 싶음.
근데 MainController로 빼면 questionList()가 static이 아닌 이상 사용할수 없을거같음.
이유는 디온이 static 쓸 필요없다고 해서 static을 안붙이기로 했기때문.

그래서 이 부분을 questionList를 선언하고있는 QuestionController 클래스로 가져오려고했는데
그렇게하자니 @RequestMapping을 사용할 수 없게 된다.
index()@GetMapping("/") 이라서.

어떻게 해야 좋을까?

git conflict

mission1 가 upstream 으로 merge 되는 것을 기다리는 동안 mission2 를 진행하려함. 이렇게하려면 git conflict에 대한 두려움이 사라져야함.

몇주전에 처음 이문제를 맞닥뜨리고나서 생각날때마다 conflict를 만들어서 해결해보려고함.

오늘에서야 드디어 완전히 이해했다고 할 수 있을거 같다.
merge, rebase를 사용하면 사용자 편리를 위해서 자동으로 합친 커밋을 만들어준다.
근데 자동으로 합쳐주지 않는 경우가 한가지 있는데 그게 바로 conflict 이다.
conflict를 부담감으로 받지않고 좋은정보로 받아들여야한다.
단지 conflict는 커밋할때 공통된 파일에서 서로 같은부분을 건드렸기때문에 사용자에 해결하도록 알려주는 것일 뿐이기 때문이다.
그래서 어떤 방법을 쓰든 그 conflict가 생긴 같은 부분을 고쳐주기만하면 해결되는 것이다.
그 어떤 방법들은 깃헙에서 해결할 수도 있고, 커맨드로 해결할 수도 있고, merge tool을 이용해서 해결할 수도 있다.
다시말하지만 가장 중요하게 기억해야할 것은 conflict는 단지 컴퓨터가 충돌난 부분을 알려주는 것일 뿐이다.
더이상 깊은 뭔가 있는게 아니다.

h2 db 추가하기

데이터베이스 사용을 위해서 디펜던시에 h2 db를 넣는 것을 배웠다. 어떤 버전은 테스트 커넥션이 작동하지 않을 수 있기때문에 버전선택에 유의해야한다. 현재날짜기준으로 1.4.197은 잘 작동한다.

h2 연결할때 설정해줘야할게 있다. 특히 JDBC URL이 맞아야 연결이 되기때문.

참고
https://stackoverflow.com/questions/24655684/spring-boot-default-h2-jdbc-connection-and-h2-console

h2는 데이터를 넣는 곳의 기본설정이 memory DB이다 그래서 리스트 콜렉션이랑 똑같다. 그래서 서버재시작하면 데이터가 날라간다. 안날라가게 application.properties 에 설정해줄수 있어보이긴 하다.

User 클래스와 데이터베이스 연결

클래스가 데이터베이스와 연결된다는걸 인식시켜주기위해서 @Entity를 붙인다
데이터베이스는 모두 PK가 있다. @Id를 통해서 가능
@GeneratedValue를 통해 데이터가 추가될때 자동으로 +1가능
@Column(nullable=false)은 String에 null이 못들어오게한다
@Column(nullable=false, length=20) length도 설정가능
어노테이션을 통해 각 컬럼(속성)의 길이같은 것을 설정할수있다

연결만하면 머하나? 실제로 추가된 데이터를 조회하려면?

데이터베이스에 데이터를 insert하거나 조회하려면 interface를 추가해야한다. User 클래스같은겨우에는 UserRepository 라고 추가하는게 좋다.
JpaRepository도 상속받아야한다. 코드로 나타내면 아래와 같다

public interface UserRepository extends JpaRepository<(데이터받는클래스),(PK의 타입..Integer Long)>

이렇게 인터페이스만 만들어줘도 기본적인 CRUD는 할 수 있다

그 외

서버에 데이터를 추가하거나 삭제할떄 GET이 아니라 POST 방식을 사용한다.

profile
TIL 남기는 공간입니다

4개의 댓글

comment-user-thumbnail
2021년 3월 9일

엇 저는 index()를 QuestionController로 옮기는데 문제가 없었어서..!
@RequestMapping을 사용해야해서 안된다라는 말씀을 정확하게 이해하지 못했어요..😂
혹시 아주 조금만 더 설명해주실 수 있나요??👀 순수하게 궁금해서 질문드려요!!

1개의 답글