보글보글 개발일지
반응형
MyBatis vs JPA
코딩기록/스프링 2023. 5. 4. 09:18

MyBatis: SQL Mapper 직접 SQL 작성 복잡한 JOIN 구현시 많이 사용 JPA: ORM(Object Relation Mapping) - 객체와 테이블 간 연결 JPA는 스펙(기능정의) → 구햔체가 필요. Hibernate JOIN의 성능이 영향을 많이 미침 간단한 기능 위주로 사용(CRUD)

article thumbnail
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 정리3
코딩기록/스프링 2022. 8. 13. 16:49

섹션 9~11 섹션 9. 값 타입 기본값 타입 [JPA의 데이터 타입 분류] 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류: 기본 값타입, 임베디드 타입, 컬렉션 값 타입(collection value type) 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 생명 주기를 엔티티에 의존. 회원을 삭제하면 이름, 나이 필드도 ..

article thumbnail
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 정리2
코딩기록/스프링 2022. 8. 7. 03:08

섹션 6~8 정리 섹션 6. 다양한 연관관계 매핑 연관관계 매핑시 고려사항 다중성 다대일, 일대다, 일대일, 다대다(실무에서 쓰면 안됨) 단방향, 양방향 테이블: 외래 키 하나로 양쪽 조인 가능 -> 방향이라는 개념이 없음 객체: 참조용 필드가 있는 쪽으로 참조 가능. 한쪽만 참조하면 단방향, 양쪽 참조시 양방향 연관관계 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래키를 관리할 곳을 지정해야함 연관관계의 주인: 외래 키를 관리하는 참조 주인의 반대편: 외래 키에 영향을 주지 않음, 단순 조회만 가능! (읽기) 다대일 [N:1] - 가장 많이 쓴다. 다대일 단방향 다 쪽에 외..

article thumbnail
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 정리1
코딩기록/스프링 2022. 7. 25. 16:32

섹션 0. 강좌 소개 실무는 수십 개 이상의 복잡한 객체와 테이블 사용 객체와 테이블 설계하고 매핑하는 방법 JPA 내부 동작 방식 이해 섹션 1. JPA 소개 SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드 객체 CURD - 필드 추가: 쿼리를 다 수정해야한다. 즉, SQL에 의존적인 개발을 피하기 어렵다. 패러다임의 불일치 : 객체 vs 관계형 데이터 베이스 객체를 관계형 DB에 저장 --> 개발자가 SQL 매퍼가 된다.. 객체와 관계형 데이터 베이스의 차이 1. 상속(관계형 DB에는 없다.) 2. 연관관계: 객체는 한방향으로만 갈 수 있고, 테이블은 양방향 조회 가능 3. 데이터 타입 4. 데이터 식별 방법 무한 반복, 지루한 코드 객체 CURD - 필드 추가: 쿼리를 다 수정해야한다. 즉,..

article thumbnail
[실전! 스프링 부트와 JPA 활용1] 정리2
코딩기록/스프링 2022. 7. 19. 17:07

섹션5. 상품 도메인 개발 상품 엔티티 개발(비지니스 로직 추가) - 구현 기능: 상품 등록, 상품 목록 조회, 상품 수정 - 엔티티 자체가 해결할 수 있는건 엔티티 안에 로직을 넣는 것이 좋다. 데이터 가지고 있는데서 비지니스 로직 나가는게 가장 응집도가 높다. 그게 객체지향적으로 좋다. 따라서 Item.java에 코드를 작성한다. //Item.java /** * stock 증가 * */ public void addStock(int quantity){ this.stockQuantity+=quantity; } /** * stock 감소 * */ public void removeStock(int quantity){ int restStock = this.stockQuantity - quantity; if(r..

article thumbnail
[실전! 스프링 부트와 JPA 활용1] 정리1
코딩기록/스프링 2022. 7. 11. 11:53

섹션 1. 프로젝트 환경설정 - devtools를 추가하고, implementation 'org.springframework.boot:spring-boot-devtools' recompile을 하면 서버 다시 켜지 않아도 html에서 바뀐 내용 적용된다. - sql 실행 파라미터를 로그로 남긴다. org.hibernate.type: trace 섹션 2. 도메인 분석 설계 (발표) 도메인 모델과 테이블 설계 - 다대다 관계 : 한 번 주문할 때 상품을 여러 개 주문 가능. 상품 하나도 주문 여러 개에 담길 수 있으므로 다대다 관계이다. 이는 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대다로 풀어낸다. - Member-Order을 동급으로 생각. 회원을 통해서 주문 일어나는게 아니라 주문 생성할 때 회..

반응형