IntelliJ IDEA 10을 사용하여 데이터베이스 모델에서 엔티티 (POJO)를 생성하려면 어떻게해야합니까? IntelliJ에서 “데이터 소스”를 생성했지만 POJO를 생성 할 수있는 방법을 모릅니다.
답변
업데이트 :
IntelliJ 16에서는이 기능이 현재 구현되었습니다. 이를 수행하는 단계는 다음과 같습니다.
1. 데이터베이스 보기 컨텍스트 메뉴
2. 스크립팅 된 확장
3. POJO 생성
자세한 내용은 여기에서 읽을 수 있습니다.
기능 요청 : 일반 JDBC 개발자를위한 “데이터베이스 스키마에서 클래스 생성”허용
참고 :
다음 정보는 버전 15 이하에 대한 것입니다.
첫째, IntelliJ에게 Hibernate를 사용하고 있음을 알려야합니다 (테이블의 orm POJO가 필요한 경우).
- “프로젝트 구조”로 이동 ( alt+ ctrl+ shift+ s)
- “프로젝트 설정”에서 “모듈”을 선택하십시오.
- +모듈에서 Hibernate 패싯을 누르고 추가하십시오.
이제 최대 절전 모드 구성 패싯을 설정하여 POJO를 추출 할 수 있습니다.
- 오른쪽 하단 수평 패널에 “지속성”이라는 탭이 표시됩니다 (지속성 탭을 찾을 수없는 경우보기> 도구 창> 지속성을 선택하여 표시 할 수 있습니다).
- 여기에서 모듈과 같은 이름의 최대 절전 모드 아이콘을 마우스 오른쪽 버튼으로 클릭 할 수 있습니다.
- “지속성 매핑 생성”- “데이터베이스 스키마 별”로 이동합니다.
- 이제 길을 찾을 수있을 것 같아요 …
- 일반적으로 설정은 사용할 데이터 소스를 선택하고 이제 데이터 소스 개체의 모든 테이블을 볼 수 있습니다.
- 이제 많은 작업을 수행하고 + 기호로 관계를 추가하고 POJO 속성의 이름과 유형을 변경하는 등의 작업을 수행 할 수 있습니다. 참고 : 오류가 발생하고 “OK”가 비활성화 된 경우 IntelliJ가 찾은 데이터 유형 때문일 수 있습니다. POJO가 유효하지 않습니다. 필요한 것으로 변경하기 만하면 바로 사용할 수 있습니다!
답변
기본 Scripted Extensions Generate POJOs.groovy
는 밑줄 (매우 일반적 임)이있는 테이블을 다룰 때 그다지 좋지 않습니다.
그래서 약간의 수정을합니다.
주요 코드
def calcFields(DasObject table) {
DasUtil.getColumns(table).reduce([]) { fields, col ->
def spec = Case.LOWER.apply(col.dataType.specification)
def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
fields += [[
name : javaName(col.name, false),
type : typeStr,
annos: """
/**
* $col.comment
*/"""]]
}
}
static String javaName(String str, boolean capitalize) {
def s = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str);
capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}
여기에서 전체 요점을 찾을 수 있습니다 https://gist.github.com/aristotll/ad799a7462e8b705b26103944cca24a6