개인공부(113)
-
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 -
JPA - API를 만들때는
절대 Entity를 넘기면 안된다 (외부로 반환하면 안된다) 만약 password가 있으면 그대로 노출되고 api 스펙이 변화된다. 고로 불안전한 API가 된다. 하지만 템플릿 엔진에서는 선택적으로 써도된다. 어차피 서버쪽에서 도는것이라.
2020.11.05 -
JPA - 엔티티 설계시 주의점
엔티티 설계시 주의점 1.엔티티에는 가급적 Setter를 사용하지 말자. Setter가 모두 열려있다. 변경 포인트가 너무 많아서, 유지보수가 어렵다. 2. 모든 연관관계는 지연로딩으로 설정 즉시로딩(EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1문제가 발생한다. // 즉시로딩 -> 멤버를 조회할때 연관된 오더를 한번에 다 조회하는것. 실무에서 모든 연관관계는 지연로딩(LAZY)으로 설정해야 한다. 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne, ManyToOne)관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다. (기본 fectch가 EAGER. 하..
2020.11.02 -
JPA - 도메인작성
foreign key 가 더 가까운곳에 지정 위와 같이 1대 다수의 경우(one to many) fk가 어느 곳에 있어야 하는가 Member와 Order : 일대다, 다대일의 양방향 관계. 따라서 연관관계의 주인을 정해야 하는데, 외래 키가 있는 주문을 연관관계의 주인으로 정하는 것이 좋다. 그러므로 Order.member를 ORDERS.MEMBER_ID 외래키와 매핑한다. Member 클래스에서 orders가 (mappedBy ="member")로 mapped된 것을 알수있다. 출저 : 인프런 -jpa1 - 김영한 님
2020.10.30