문제

Java Spring Hibernate 응용 프로그램이 있습니다 - 기본적으로 최대 절전 모드 인 도메인 클래스로 완성됩니다.

성배로 잘 쓸 수 있다고 생각하는 기능이 있습니다.

메인 Java 앱에서 만든 도메인 클래스를 재사용하고 싶습니다.

그렇게하는 가장 좋은 방법은 무엇입니까?

Java 클래스를 연장하는 새로운 도메인 클래스를 작성해야합니까? 이것은 끈적 끈적하거나 Java 도메인 클래스에서 컨트롤러를 '생성'할 수 있습니까?

성배에서 Java 도메인 개체를 재사용하는 데 가장 좋은 관행은 무엇입니까?

그러한 통합에 대해 이야기하는 튜토리얼에 대해 알고 있다면 굉장 할 것입니다 !!!

추신 : 나는 Grails-Groovy에 상당히 초보자이므로 명백한 것을 놓칠 수 있습니다. 감사 !!!

도움이 되었습니까?

해결책

그루비보다는 성배를 정말로 원하십니까?

성배는 실제로 기존 웹 앱에 부품을 추가하는 데 사용할 수있는 것이 아닙니다. 전체 "구성에 대한 협약"접근 방식은 Grails의 규칙에 따라 거의 플레이해야한다는 것을 의미합니다. 그렇지 않으면 사용 할 필요가 없습니다. 그리고 이러한 규칙 중 하나는 도메인 객체가 Grails 런타임에 의해 크게 "향상된"그루비 클래스라는 것입니다.

기존 Java 클래스를 연장 할 수는 있지만 내기하지 않을 것입니다. 그들이 성배에서 일하게하려는 노력. 당신은 프레임 워크에서 이익을 얻지 않고 싸울 것입니다.

IMO는 두 가지 옵션이 있습니다.

  • 기존 코드를 최대한 재사용하면서 앱을 성배로 처음부터 다시 작성하십시오.
  • 앱을 그대로 유지하고 성배를 사용하지 않고 그루비에 새로운 물건을 추가하십시오.

후자는 아마도 당신의 상황에서 더 나을 것입니다. Grails는 새로운 웹 앱을 매우 빨리 만들기위한 것입니다. 기존 앱에 물건을 추가하는 것은 그것이 만든 것이 아닙니다.

편집하다:의견의 설명과 관련하여 : 기본적으로 다른 앱에서 사용하는 데이터에 대한 데이터 입력/유지 보수 프론트 엔드를 작성하고 DB를 유일한 통신 채널로 사용하는 경우 실제로 성배와 잘 작동 할 수 있습니다. 도메인 클래스에서 자체적으로 생성하는 대신 기존 DB 스키마를 사용하도록 구성 할 수 있습니다 (후자는 작품이 적지 만).

다른 팁

기존 Java 코드와 통합 할 때 그루비와 성배가 얼마나 잘 뛰어나는 지 알면 옵션에 대해 Michael보다 조금 더 낙관적 일 수 있다고 생각합니다.

첫 번째는 이미 Spring과 Hibernate를 사용하고 있으며 도메인 클래스가 이미 Pojos이므로 통합하기 쉽습니다. 당신이 가질 수있는 모든 스프링 콩은 평소와 같이 XML 파일로 지정할 수 있습니다. grails-app/conf/spring/resources.xml) 또는 훨씬 더 간단하게 사용합니다 스프링 콩 빌더 성배의 특징. 그런 다음 모든 컨트롤러,보기, 서비스 등에서 이름으로 액세스 할 수 있으며 평소와 같이 작업 할 수 있습니다.

도메인 클래스 및 데이터베이스 스키마를 통합하기위한 옵션은 다음과 같습니다.

  • GORM을 우회하고 도메인 객체를 이미하고있는 것처럼 정확히로드/저장하십시오.

    Grails는 Gorm을 사용하도록 강요하지 않으므로 이것은 매우 간단해야합니다. .jar Java 코드 중 (아직하지 않은 경우) Grails App 's에 떨어 뜨립니다. lib 예배 규칙서. Java 프로젝트가 mavenized 인 경우 더 쉽습니다. Grails 1.1은 Maven과 함께 작동하므로 pom.xml Grails 앱의 경우 다른 (Java) 프로젝트와 마찬가지로 Java 프로젝트를 종속성으로 추가하십시오.

    어느 쪽이든 당신은 할 수 있습니다 import 수업 (및 지원 수업) 및 평소와 같이 진행합니다. Groovy가 Java와의 엄격한 통합으로 인해 객체를 만들고, 데이터베이스에서로드하고, 수정하고, 저장하고, 검증 등을 검증 할 수 있습니다. Java 프로젝트에서와 같이 정확히. 당신은 이런 식으로 Gorm의 모든 편의를 얻지는 못하지만, 이미 당신에게 의미가있는 방식으로 객체를 사용하는 이점이 있습니다 (Groovy 덕분에 코드가 조금 줄어드는 제외). 항상이 옵션을 시도하여 무언가가 작동하는 다음 나중에 다른 옵션 중 하나를 고려할 수 있습니다.

    이 옵션을 시도하는 경우 하나의 팁 : 실제 지속성 코드를 Grails 서비스에 추상화합니다 (StorageService 아마도) 컨트롤러가 지속성을 직접 처리하지 않고 메소드를 호출하도록하십시오. 이렇게하면 필요한 경우 해당 서비스를 도로 아래로 교체 할 수 있으며 동일한 인터페이스를 유지하는 한 컨트롤러에 영향을 미치지 않습니다.

  • 기존 Java 클래스의 서브 클래스로 새로운 Grails 도메인 클래스를 만듭니다.

    수업이 이미 적절한 콩으로 작성된 경우, 즉 모든 속성에 대한 Getter/Setter 방법이있는 경우 매우 간단 할 수 있습니다. 성배는 이러한 상속 된 속성을 더 간단한 그루비 스타일로 작성한 경우와 마찬가지로 보일 것입니다. 간단한 검증 검사 (빈약하지 않은 등이 아닌)를 사용하여 각 속성을 검증하는 방법을 지정하거나 더 복잡한 작업을 수행하는 폐쇄로 Pojo 슈퍼 클래스에서 기존 방법을 호출 할 수 있습니다.

    당신은 거의 확실히 GORM 매핑 DSL 기존 데이터베이스 스키마의 현실에 맞습니다. 관계는 까다로워 질 수있는 곳이 될 것입니다. 예를 들어, Gorm이 조인 테이블을 기대하는 다른 솔루션이있을 수 있지만, 이와 같은 차이를 해결하는 방법도있을 수도 있습니다. Gorm과 매핑 DSL에 대해 최대한 학습 한 다음 몇 가지 수업을 실험하여 이것이 실행 가능한 옵션인지 확인하는 것이 좋습니다.

  • 성배가 기존의 Pojos와 최대 절전 모드 매핑을 직접 사용하십시오.

    나는 이것을 직접 시도하지 않았지만 Grails의 최대 절전 모드 통합 페이지 "Grails는 또한 도메인 모델을 Java로 작성하거나 최대 절전 모드를 사용하여 맵핑 된 기존 도메인 모델을 재사용 할 수 있습니다. 필요한 'Hibernate.cfg.xml'을 배치하기 만하면됩니다. '%project_home%/grails-app/conf/hibernate'디렉토리의 파일 및 해당 매핑 파일. 여전히 Gorm에서 허용되는 모든 동적 지속 및 쿼리 방법을 호출 할 수 있습니다! "

    인터넷 검색 "Gorm Legacy"는 예를 들어 많은 유용한 토론과 예를 제기합니다. 이 블로그 게시물 Glen Smith (곧 출시 될 사람의 공동 저자 성배가 작동합니다) 여기서 그는 "Hell의 레거시 DB"와 통합하는 데 사용되는 최대 절전 모드 매핑 파일을 보여줍니다. 성배가 작동합니다 이 주제에 대한 자세한 토론을 약속하는 "Advanced Gorm Kungfu"라는 제목의 장이 있습니다. 나는 책의 사전 릴리스 PDF를 가지고 있으며, 아직 그 장에 도달하지 못했지만 지금까지 읽은 내용은 매우 좋으며 책은 다른 Grails 책에서 적절하게 논의되지 않은 많은 주제를 다룹니다. .

이 마지막 옵션에 대해 개인적인 경험을 제공 할 수 없지만 죄송합니다. 어떤 옵션을 선택하든 그것이 어떻게 나오는지 알려주십시오!

이 게시물은 성배를 사용하기위한 몇 가지 제안을 제공합니다 웹 프레임 워크에서 기존 Java 클래스를 래핑합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top