#java #eclipse #jpa #code-generation #dto
#java #eclipse #jpa #генерация кода #dto
Вопрос:
Я хотел бы простой инструмент прямой генерации DTO, который либо
- Сгенерируйте его «на лету» (например, cglib — создайте класс и объект DTO «на лету»)
- Или плагин Eclipse, который возьмет объект и сгенерирует DTO (пользователь укажет, какой древовидный график включить, а для невключенных будет включать внешние ключи вместо связанных объектов и т.д.)
Например. возьмите что-то вроде этого
@Entity
@Table(name="my_entity")
public class MyEntity {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private RelatedEntity related;
public RelatedEntity getRelated(){
return related;
}
...
И генерировать что-то вроде этого :
@Entity
@Table(name="my_entity")
public class MyEntity imlpements MyEntityDTO {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private RelatedEntity related;
//overrides MyEntity interface, it's allowed to narrow return type
public RelatedEntity getRelated(){
return related;
}
...
//implements MYEntityDTO respective interfaces
public Long getRelatedId(){return related.getId();}
И интерфейсы DTO:
public interface MyEntityDTO {
public String getId();
public String getName();
public Long getRelatedId();
public RelatedEntityDTO getRelated(); //RelatedEntity implements RelatedEntityDTO
...
}
public interface RelatedEntityDTO {
...
}
Если мы не хотим включать дочерние элементы в график, удалите его из интерфейса DTO:
public interface MyEntityDTO {
public String getId();
public String getName();
public Long getRelatedId();
...
Я уверен, что для этого есть какой-нибудь плагин eclipse, и если нет, я призываю кого-нибудь написать его или объяснить, почему то, что я хочу, бесполезно (и предоставить альтернативное предложение)
Комментарии:
1. У нас пока нет плагина IDE, но Blaze-Persistence Entity Views ( github.com/Blazebit/blaze-persistence#entity-view-usage ) использует интерфейсы точно так же, как вы это продемонстрировали. В какой-то момент мы собираемся разработать для этого плагины IDE. Вы можете посмотреть github.com/Blazebit/blaze-persistence/issues/364 чтобы получать обновления по этому вопросу
Ответ №1:
Вероятно, инструменты гибернации должны делать это: http://hibernate.org/subprojects/tools.html
Комментарии:
1. Я не смог найти как, вы знаете это как факт?
2. В нем сказано, что он пишет целое приложение Seam, поэтому я бы сказал, что это правда, и предлагаю Roo в качестве альтернативы Spring, но нет плагина, отличного от Spring / Seam, который я мог бы найти … что немного грустно … 🙂 В любом случае, это лучший ответ на данный момент…
Ответ №2:
Инструменты Telosys могут генерировать как объект JPA, так и DTO
Давайте взглянем на это руководство https://sites.google.com/site/telosystutorial/springmvc-jpa-springdatajpa
он генерирует полноценное приложение Spring MVC CRUD с архитектурой JPA: https://sites.google.com/site/telosystutorial/springmvc-jpa-springdatajpa/presentation/architecture Также генерируется объект mapper / DTO (он использует «org.modelmapper»)
Шаблоны настраиваются
Ответ №3:
Попробуйте взглянуть на: https://github.com/nikelin/spring-data-generation-kit
Но это подходит только для вас, если ваш проект находится под управлением Maven.