리플렉션의 시작은 Class Class (Java Platform SE 8 ) (oracle.com) Class에 접근하는 방법 모든 클래스를 로딩 한 다음 Class의 인스턴스가 생긴다. "타입.class"로 접근할 수 있다. 모든 인스턴스는 getClass()메소드를 가지고 있다. "인스턴스.getClass()"로 접근할 수 있다. 클래스를 문자열로 읽어오는 방법 Class.forName("FQCN") 클래스패스에 해당 클래스가 없다면 ClassNotFoundException이 발생한다. Class를 통해 할 수 있는 것 필드(목록) 가져오기 메소드(목록) 가져오기 상위 클래스 가져오기 인터페이스(목록) 가져오기 어노테이션 가져오기 생성자 가져오기 ... Test public class Test { ..
Keyword 런타임중에 알아내야할 값(동적)은 Annotation에 들어가지 못한다. 컴파일 수준(정적)에서 해석되어야 한다. @Retention SOURCE CLASS RUNTIME @Inherited 자식 클래스에게도 상속이 가능하게 AnnotationProcessor Javadoc mockito 의 document Reflection TmpClass.class.getDeclaredFields() 부모클래스 제외 , 자신의 private한 필드 까지 TmpClass.class.getFields() 부모클래스에 있는 것 과 자신의 public한 필드 까지 JAVA의 ServiceLoader [Java-35] Lombok @Getter, @Setter 직접 만들어 보자 Java Annotation Q ..
준영속 엔티티? ★ 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. Book객체는 이미 DB에 한 번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 있으면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용 @Transactional // bookParam은 준영속 상태의 엔티티이다. public void updateItem(Long itemId , Book bookParam){ // findItem은 영속상태이다. // JPA가 감시하는 대상이다. Item findItem = itemRepository.findOne(itemId); findItem.setPrice(bookParam.getPrice()); ... findI..
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 변경 감지와 병합 (준영속 엔티티) 준영속 엔티티? ★ 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. Book객체는 이미 DB에 한 번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 write-read.tistory.com 홈 화면과 레이아웃 HomeController @Controller @Slf4j public class HomeController { // @Slf4j 대체 // Logger log = L..
ordinal() 정의된 순서를 반환한다 순서가 바뀔 수 있기 때문에 순서를 사용해서는 안된다 JPA에서 사용시에도 enum타입은 ordinal을 쓰기보다는 타입을 String으로 지정해 문자가 들어가게 해야한다. 타입 세이프티 (type safety) EnumSet EnumMap
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 구현 기능 상품 주문 주문 내역 조회 주문 취소 주문 엔티티 @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) // 객체 생성시 생성자를 protected하고 createOrder를 사용하여 Order를 생성하게 한다. public class Order { @Id @GeneratedValue @Column(name = "order..
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 구현 기능 상품 등록 상품 목록 조회 상품 수정 상품 엔티티 @Entity @Getter @Setter @Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 싱글 테이블 전략 @DiscriminatorColumn(name = "dtype") public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; pr..
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 계층형 구조 사용 controller , web : 웹 계층 service : 비즈니스 로직 , 트랜잭션 처리 repository : JPA를 직접 사용하는 계층 , 엔티티 매니저 사용 domain : 엔티티가 모여있는 계층 , 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 1. 서비스 , 리포지토리 계층 개발 2. 테스트 케이스 작성 , 검증 3. 웹 계층 적용 회원 ..
회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 , 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 실무에서는 회원이 주문을 참조하지 않고 , 주문이 회원을 참조하는 것으로 충분하다. 연관관계 매핑 분석 회원과 주문 일대다 , 다대일의 양방향 관계다. 따라서 연관관계의 주인을 정해야하는데 , 외래키가 있는 주문을 연관관계의 주인으로 정하는것이 좋다. 주문상품과 주문 다대일 양방향 관계다. 외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다. 주문상품과 상품 다대일 단방향 관계다. 주문과 배송 일대일 양방향 ..
기록/JAVA 2021. 2. 7. 22:02
리플렉션의 시작은 Class Class (Java Platform SE 8 ) (oracle.com) Class에 접근하는 방법 모든 클래스를 로딩 한 다음 Class의 인스턴스가 생긴다. "타입.class"로 접근할 수 있다. 모든 인스턴스는 getClass()메소드를 가지고 있다. "인스턴스.getClass()"로 접근할 수 있다. 클래스를 문자열로 읽어오는 방법 Class.forName("FQCN") 클래스패스에 해당 클래스가 없다면 ClassNotFoundException이 발생한다. Class를 통해 할 수 있는 것 필드(목록) 가져오기 메소드(목록) 가져오기 상위 클래스 가져오기 인터페이스(목록) 가져오기 어노테이션 가져오기 생성자 가져오기 ... Test public class Test { ..
기록/Whiteship 라이브 스터디 2021. 2. 7. 00:58
Keyword 런타임중에 알아내야할 값(동적)은 Annotation에 들어가지 못한다. 컴파일 수준(정적)에서 해석되어야 한다. @Retention SOURCE CLASS RUNTIME @Inherited 자식 클래스에게도 상속이 가능하게 AnnotationProcessor Javadoc mockito 의 document Reflection TmpClass.class.getDeclaredFields() 부모클래스 제외 , 자신의 private한 필드 까지 TmpClass.class.getFields() 부모클래스에 있는 것 과 자신의 public한 필드 까지 JAVA의 ServiceLoader [Java-35] Lombok @Getter, @Setter 직접 만들어 보자 Java Annotation Q ..
기록/스프링 부트 와 JPA 활용 2021. 2. 6. 21:40
준영속 엔티티? ★ 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. Book객체는 이미 DB에 한 번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 있으면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용 @Transactional // bookParam은 준영속 상태의 엔티티이다. public void updateItem(Long itemId , Book bookParam){ // findItem은 영속상태이다. // JPA가 감시하는 대상이다. Item findItem = itemRepository.findOne(itemId); findItem.setPrice(bookParam.getPrice()); ... findI..
기록/스프링 부트 와 JPA 활용 2021. 1. 31. 20:04
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 변경 감지와 병합 (준영속 엔티티) 준영속 엔티티? ★ 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. Book객체는 이미 DB에 한 번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 write-read.tistory.com 홈 화면과 레이아웃 HomeController @Controller @Slf4j public class HomeController { // @Slf4j 대체 // Logger log = L..
기록/Whiteship 라이브 스터디 2021. 1. 31. 00:31
ordinal() 정의된 순서를 반환한다 순서가 바뀔 수 있기 때문에 순서를 사용해서는 안된다 JPA에서 사용시에도 enum타입은 ordinal을 쓰기보다는 타입을 String으로 지정해 문자가 들어가게 해야한다. 타입 세이프티 (type safety) EnumSet EnumMap
기록/스프링 부트 와 JPA 활용 2021. 1. 30. 22:05
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 구현 기능 상품 주문 주문 내역 조회 주문 취소 주문 엔티티 @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) // 객체 생성시 생성자를 protected하고 createOrder를 사용하여 Order를 생성하게 한다. public class Order { @Id @GeneratedValue @Column(name = "order..
기록/스프링 부트 와 JPA 활용 2021. 1. 30. 22:04
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 구현 기능 상품 등록 상품 목록 조회 상품 수정 상품 엔티티 @Entity @Getter @Setter @Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 싱글 테이블 전략 @DiscriminatorColumn(name = "dtype") public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; pr..
기록/스프링 부트 와 JPA 활용 2021. 1. 30. 20:02
도메인 분석 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 write-read.tistory.com 계층형 구조 사용 controller , web : 웹 계층 service : 비즈니스 로직 , 트랜잭션 처리 repository : JPA를 직접 사용하는 계층 , 엔티티 매니저 사용 domain : 엔티티가 모여있는 계층 , 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 1. 서비스 , 리포지토리 계층 개발 2. 테스트 케이스 작성 , 검증 3. 웹 계층 적용 회원 ..
기록/스프링 부트 와 JPA 활용 2021. 1. 27. 23:00
회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반 , 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 실무에서는 회원이 주문을 참조하지 않고 , 주문이 회원을 참조하는 것으로 충분하다. 연관관계 매핑 분석 회원과 주문 일대다 , 다대일의 양방향 관계다. 따라서 연관관계의 주인을 정해야하는데 , 외래키가 있는 주문을 연관관계의 주인으로 정하는것이 좋다. 주문상품과 주문 다대일 양방향 관계다. 외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다. 주문상품과 상품 다대일 단방향 관계다. 주문과 배송 일대일 양방향 ..
기록/스프링 부트 와 JPA 활용 2021. 1. 24. 22:52
View 환경 설정 thymeleaf 템플릿 엔진 공식 사이트: https://www.thymeleaf.org/ 스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/ 스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/ boot-features-developing-web-applications.html#boot-features-spring-mvc-template- engines 스프링 부트 thymeleaf viewName 매핑 스프링 부트가 매핑을 알아서 해줌 resources:templates/ + {viewName} + .html @GetMapping(..