전체 글(139)
-
C언어 - 컴퓨터에 대한 이해 2020.11.06
-
C언어를 공부하게 된 이유
방향을 틀어 C언어를 주력 삼으려는 이유는 아니다. Java도 결국 네이티브 메소드는 C언어로 이루어져있고 컴퓨터 자체를 이해하기 위해선 메모리 관리를 직접하는(unmanaged)언어를 배워두는게 숙달치 못하더라도 어떻게 언어가 짜여져있고, 창시자들이 무슨 생각으로 만들었는지 이해하는게 프로그래머의 삶에 더 나은 영향을 주리라 믿는다. 급하게 클론코딩으로 자바웹사이트를 2개만들어 놨으니 다시 천천히 기본부터 보자. 운영체제와 네트워크는 전공자 못지 않게 이해하고픈 갈망이 컸다. C언어 -> 운영체제 -> 네트워크 -> 자바의 정석 -> 웹MVC -> 스프링 -> JPA (알고리즘과 자료구조는 매일) 차근차근 다시 밟아보자.
2020.11.06 -
JPA - 변경 감지와 병합 (merge)
준영속 엔티티? 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. (여기서는 itemService.saveItem(book) 에서 수정을 시도하는 Book 객체다. Book 객체는 이미 DB 에 한번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 있으면 준 영속 엔티티로 볼 수 있다.) 준영속 엔티티를 수정하는 2가지 방법 변경감지 기능 사용 병합(merge) 사용 변경감지 기능 사용 @Transactional public void updateItem(Long itemId, Book param){ Item findItem = itemRepository.findOne (itemId); // 영속상태 findItem.setPrice(param.getPrice());..
2020.11.05 -
GetMapping을 지정하지 않았을때 생기는 일
현재 인프런 김영한 개발자님의 JPA 실전1 을 듣고 있었다. 그러던중.. GetMapping에 주소를 넣는걸 깜빡했다. 실전 @GetMapping public String itemList(Model model){ List items = itemService.findItems (); model.addAttribute ("items", items); return "items/itemList"; } ! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 내가 알기론 @GetMapping의 value로 "/items" 가 들어가야 localhost:8080/items 창이 뜨는데 보다 싶이 뜨질 않아야 하는데 잘도 떳다.. 오잉? 무슨 일이지 하고 ..
2020.11.05 -
JPA - API를 만들때는
절대 Entity를 넘기면 안된다 (외부로 반환하면 안된다) 만약 password가 있으면 그대로 노출되고 api 스펙이 변화된다. 고로 불안전한 API가 된다. 하지만 템플릿 엔진에서는 선택적으로 써도된다. 어차피 서버쪽에서 도는것이라.
2020.11.05 -
도메인이란 결국
객체지향의 사실과 오해에서 읽은 내용이 떠오른다. 도메인이란 사람들이 기대하는 것을 실현해낸 환상. 쇼핑몰 사이트는 사람들이 정말 자기가 제품을 보고 고르고 산다는 환상을 제공하는 것. 물건을 집어들지 않았지만 골라서 사진을 보고 물건을 장바구니에 넣진 않았지만 장바구니 기능으로 구매 대기리스트에 올리고 직접 돈을 건네거나 카드를 긁지 않았지만 전산상으로 수치가 달라지는 것. 은행어플도 사람들이 은행에 바라는, 예상하는 기능들을 구현해낸 환상. MVC로 구현해내든 JSP 한페이지 안에 뷰와 컨트롤러 서비스를 그냥 다 때려박아서 무식하게 구현을 하든 사람들 눈에 그저 작동하면 다 똑같다. 올바른, 유지보수가 쉬운, 확장성을 고려한 구조를 고민하고 시간과 돈을 쓰는 것은 결국 더 큰 이익 때문 아닌가. 고용..
2020.11.02