JHipster에서 엔티티 생성시 일반적으로 다음과 같은 요소들이 필요하다.

  • A database table
  • A Liquibase change set
  • A JPA Entity
  • A Spring Data JPA Repository
  • A Spring MVC REST Controller, which has the basic CRUD operations
  • An Angular router, a component and a service
  • An HTML view
  • Integration tests, to validate everything works as expected
  • Performance tests, to see if everything works smoothly

엔티티 간 관계가 필요할 시 추가적으로

  • A database foreign key
  • Specific JavaScript and HTML code for managing this relationship

JHipster가 제공하는 entity sub-generator를 이용하면 위의 요소들을 자동생성 해준다.

  •  jhipster entity <entityName> --[options] 

sub-generator에서 사용 가능한 옵션은 jhipster entity --help를 통해 확인해볼 수 있다.

  • --table-name <table_name> : entity와 다른 이름으로 테이블을 생성하고 싶을 시. (기본 옵션은 엔티티와 동일한 이름으로 테이블을 생성한다.)
  • --angular-suffix <suffix> : 모든 angular router에 접미사를 추가하고 싶을 시.
  • --client-root-folder <folder-name> : client side 엔티티들의 루트 폴더 이름 설정.
  • --regenerate : entity 재생성.
  • --skip-server : client-side 코드만 생성.
  • --skip-client : server-side 코드만 생성.
  • --skip-db-changelog : Liquibase 에서 change log 생성을 생략.
  • --db : server-side를 생략할 때 db

 

JHipster UML and JDL Studio를 통한 다중 엔티티 생성

(JHipster UML, JDL Studio)

  • jhipster import-jdl your-jdl-file.jh.
  • jhipster import-jdl ./my-jdl-file.jdl --json-only : .jhipster 폴더에 존재하는 json 파일만 엔티티 생성.
  • jhipster import-jdl ./my-jdl-file.jdl --force : import-jdl 옵션은 기본적으로 변경된 엔티티만 재생성함. --force 옵션을 통해 모든 엔티티 재성성.

엔티티 생성시 정보

  • Entity fields
    - java나 사용하는 db의 예약어들은 field keyword로 사용할 수 없다. 
  • Field types
    - java타입을 기본적으로 사용하고, db종류에 따라 키워드가 변경된다.
  • Validation
    - 각각의 필드에 유효성 룰을 추가할 수 있고, 이는 client-side, server-side에 각각 추가 된다.
    (Angular, React, Vue validation / Java Domin object bean validation)
  • Entity relationships
    - 엔티티 간 관계 설정
  • Generating a separate service class for your business logic
    - 서비스 계층 생성 여부
  • Data Transfer Objects (DTOs)
    - 서비스 계층 생성 시 DTO 사용 여부를 선택할 수 있다.
  • Filtering
    - JPA를 통한 필터링 옵션을 제공한다.
  • Pagination
    - 페이지네이션은 Link header를 이용한다.
    - No pagination(back-end가 페이징 처리되지 않음), pagination(Bootstrap pagination component), Infinite scroll(directive 사용) 3가지 옵션을 제공한다. 

엔티티 업데이트

- sub-generator에 이미 생성 된 엔티티의 이름을 재입력할 경우  엔티티 업데이트가 가능하다. (.jhipster 디렉토리에 .json파일 참조)

- 재생성 / 필드, 관계 추가 / 필드, 관계 제거 등의 옵션 선택이 가능한다.

 

 

참조 : https://www.jhipster.tech/creating-an-entity/

+ Recent posts