IntelliJ IDEA 10 DB 모델에서 엔티티 생성 (POJO)


77

IntelliJ IDEA 10을 사용하여 데이터베이스 모델에서 엔티티 (POJO)를 생성하려면 어떻게해야합니까? IntelliJ에서 "데이터 소스"를 생성했지만 POJO를 생성 할 수있는 방법을 모릅니다.

답변:


132

업데이트 :
IntelliJ 16에서는이 기능이 현재 구현되었습니다. 이를 수행하는 단계는 다음과 같습니다.
1. 데이터베이스 보기 컨텍스트 메뉴
2. 스크립팅 된 확장
3. POJO 생성


자세한 내용은 여기에서 읽을 수 있습니다.
기능 요청 : 일반 JDBC 개발자를위한 "데이터베이스 스키마에서 클래스 생성"허용


참고 : 다음 정보는 버전 15 이하에 대한 것입니다.

첫째, IntelliJ에게 Hibernate를 사용하고 있음을 알려야합니다 (테이블의 orm POJO가 필요한 경우).

  1. "프로젝트 구조"로 이동 ( alt+ ctrl+ shift+ s)
  2. "프로젝트 설정"에서 "모듈"을 선택하십시오.
  3. +모듈에서 Hibernate 패싯을 누르고 추가하십시오.

이제 최대 절전 모드 구성 패싯을 설정하여 POJO를 추출 할 수 있습니다.

  1. 오른쪽 하단 수평 패널에 "지속성"이라는 탭이 표시됩니다 (지속성 탭을 찾을 수없는 경우보기> 도구 창> 지속성을 선택하여 표시 할 수 있습니다).
  2. 여기에서 모듈과 같은 이름의 최대 절전 모드 아이콘을 마우스 오른쪽 버튼으로 클릭 할 수 있습니다.
  3. "지속성 매핑 생성"- "데이터베이스 스키마 별"로 이동합니다.
  4. 이제 길을 찾을 수있을 것 같아요 ...
  5. 일반적으로 설정은 사용할 데이터 소스를 선택하고 이제 데이터 소스 개체의 모든 테이블을 볼 수 있습니다.
  6. 이제 많은 작업을 수행하고 + 기호로 관계를 추가하고 POJO 속성의 이름과 유형을 변경하는 등의 작업을 수행 할 수 있습니다. 참고 : 오류가 발생하고 "OK"가 비활성화 된 경우 IntelliJ가 찾은 데이터 유형 때문일 수 있습니다. POJO가 유효하지 않습니다. 필요한 것으로 변경하기 만하면 바로 사용할 수 있습니다!

4
또한 JPA 패싯도 사용할 수 있습니다
nahab 2013

9
이러한 패싯은 Ultimate 버전에서만 사용할 수 있습니다
zpontikas 2014

4
감사합니다. 추가 할 수있는 모든 것 : 1 단계에서 언급 한 지속성 탭 또는 패널을 찾을 수없는 경우보기> 도구 창> 지속성을 선택하여 표시 할 수 있습니다.
Andrei Rykhalski 2015

1
나는 그것을 클릭하고 아무 일도 발생하지 않습니다
Kalpesh SONI

3
그것은 나를 위해 실패한 "이제 당신이 당신의 길을 찾을 수 있다고 생각합니다"이후입니다. 소스와 테이블을 선택합니다. 그런 다음 "맵핑 XML"또는 "JPA 주석"을 원합니다. 매핑 XML을 선택할 때 디렉토리를 입력 할 수 없습니다. Annotation을 선택하면 세션 팩토리를 원하고 세션 팩토리를 추가하려고 할 때 소스 루트가 없다고 불평하지만 하나가 있다고 불평합니다. 또한 그것이 무엇이든간에 "지속성 단위"를 원한다고 말합니다. 엔티티별로 별도의 XML을 선택하면 OR 생성을 수행한다고 말하지만 아무것도 생성되지 않습니다.
Florian F

8

기본 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.