alguma ferramenta para mapeamento de objeto java para objeto? [fechadas]
231
Estou tentando converter DO para DTO usando java e procurando uma ferramenta automatizada antes de começar a escrever o meu. Eu só queria saber se existe alguma ferramenta gratuita disponível para o mesmo.
Jackson (a biblioteca JSON) tem um método new ObjectMapper().convertValue(...). Jackson também tem suporte para anotações e mixagens de anotações, então acho uma ótima opção.
O Dozer é um mapeador Java Bean para Java Bean que copia recursivamente dados de um objeto para outro. Normalmente, esses Java Beans serão de diferentes tipos complexos.
O Dozer suporta mapeamento de propriedades simples, mapeamento de tipos complexos, mapeamento bidirecional, mapeamento implícito-explícito, bem como mapeamento recursivo. Isso inclui atributos de coleção de mapeamento que também precisam de mapeamento no nível do elemento.
Muito tempo depois, venho fazer uma atualização, espero que meu comentário seja lido: Agora o Dozer parece estar morto, e uma boa opção é usar o MapStruct, é fácil (anotações de suporte), rápido (sem reflexão) ) e parece seguro (no momento). Porém, isso está incluído na lista do @Pascal Thivent, mas eu o aconselho (mesmo que eu tenha tido alguns problemas ao usá-lo junto com o lombok).
Commons-BeanUtils : ConvertUtils -> métodos utilitários para converter valores escalares de String em objetos da Classe especificada, matrizes de String em matrizes da Classe especificada.
Commons-Lang : ArrayUtils -> Operações em matrizes, matrizes primitivas (como int []) e matrizes wrapper primitivas (como Integer []).
Estrutura Spring : O Spring oferece um excelente suporte para PropertyEditors, que também podem ser usados para transformar objetos de / para Strings.
Dozer : O Dozer é um mapeador poderoso, mas simples, de Java Bean para Java Bean que copia recursivamente dados de um objeto para outro. Normalmente, esses Java Beans serão de diferentes tipos complexos.
ModelMapper : ModelMapper é uma estrutura inteligente de mapeamento de objetos que mapeia automaticamente objetos entre si. Ele usa uma abordagem baseada em convenções para mapear objetos enquanto fornece uma API segura de refatoração simples para lidar com casos de uso específicos.
MapStruct : MapStruct é um gerador de código em tempo de compilação para mapeamentos de bean, resultando em código de mapeamento rápido (sem uso de reflexão ou similar), sem dependência e com segurança de tipo em tempo de execução.
Orika : O Orika usa geração de código de bytes para criar mapeadores rápidos com sobrecarga mínima.
Selma : gerador de código em tempo de compilação para mapeamentos
JMapper : geração de mapeador de beans usando anotação, XML ou API (parece morto, última atualização 2 anos atrás)
Smooks : O Cartucho JavaBean Smooks permite criar e preencher objetos Java a partir dos dados da mensagem (por exemplo, vincular dados a) (sugerido pela superfilina nos comentários). (Não está mais em desenvolvimento ativo)
Commons-Convert : O Commons-Convert visa fornecer uma única biblioteca dedicada à tarefa de converter um objeto de um tipo para outro. O primeiro estágio se concentrará nas conversões Objeto para String e String para Objeto. (parece morto, última atualização 2010)
Transmorph : Transmorph é uma biblioteca java gratuita usada para converter um objeto Java de um tipo em um objeto de outro tipo (com outra assinatura, possivelmente parametrizada). (parece morto, última atualização de 2013)
EZMorph : O EZMorph é uma biblioteca java simples para transformar um Objeto em outro Objeto. Ele suporta transformações para primitivos e objetos, para matrizes multidimensionais e transformações com o DynaBeans (parece morto, última atualização em 2008).
Morph : Morph é uma estrutura Java que facilita a interoperabilidade interna de um aplicativo. À medida que a informação flui através de um aplicativo, ela passa por várias transformações. Morph fornece uma maneira padrão de implementar essas transformações. (parece morto, última atualização de 2008)
Lorentz : Lorentz é uma estrutura genérica de conversão de objeto para objeto. Ele fornece uma API simples para converter objetos Java de um tipo em um objeto de outro tipo. (parece morto)
OTOM : Com o OTOM, você pode copiar qualquer dado de qualquer objeto para qualquer outro objeto. As possibilidades são infinitas. Bem-vindo ao "outono". (parece morto)
Orika é uma estrutura de mapeamento Java Bean que copia recursivamente (entre outros recursos) dados de um objeto para outro. Pode ser muito útil ao desenvolver aplicativos de várias camadas.
A Orika se concentra em automatizar o máximo possível, ao mesmo tempo em que fornece personalização através da configuração e extensão, quando necessário.
Orika permite que o desenvolvedor:
Mapear objetos complexos e profundamente estruturados
"Achatar" ou "Expandir" objetos mapeando propriedades aninhadas para propriedades de nível superior e vice-versa
Crie mapeadores on-the-fly e aplique personalizações para controlar parte ou todo o mapeamento
Crie conversores para controle completo sobre o mapeamento de um conjunto específico de objetos em qualquer lugar do gráfico de objetos - por tipo ou mesmo por nome de propriedade específico
Manipule proxies ou objetos aprimorados (como os do Hibernate ou as várias estruturas simuladas)
Aplique mapeamento bidirecional com uma configuração
Mapeie para instâncias de uma classe concreta apropriada para uma classe ou interface abstrata de destino
Manipular mapeamentos reversos
Manipule convenções complexas além das especificações do JavaBean.
A Orika usa a geração de código de bytes para criar mapeadores rápidos com sobrecarga mínima.
static void copyProperties(Object dest, Object orig)
-Copie os valores da propriedade do bean de origem para o bean de destino em todos os casos em que os nomes das propriedades sejam os mesmos.
yeh, mas as propriedades que estão no bean de origem, mas não no bean de destino, são simplesmente ignoradas. Obrigado de qualquer forma Pablojim :) Eu acho que tem que ir com Dozer uma vez que temos alguns nomes de propriedades diferentes para DO e DTO :(
ravinikam
1
É justo - eu não sabia disso ... A lista de Pascal foi bastante impressionante!
É muito fácil de usar para casos simples, razoavelmente capaz para casos mais complexos, embora ainda existam algumas áreas em que posso imaginar aprimorá-lo para ainda mais complexidades.
Você também pode tentar mapear a estrutura com base no Dozer, mas com a declaração de mapeamento do Excel. Eles têm algumas ferramentas e recursos interessantes adicionais. Verifique em http://openl-tablets.sf.net/mapper
new ObjectMapper().convertValue(...)
. Jackson também tem suporte para anotações e mixagens de anotações, então acho uma ótima opção.Respostas:
Você poderia tentar Dozer .
fonte
Existem algumas bibliotecas por aí:
Commons-BeanUtils : ConvertUtils -> métodos utilitários para converter valores escalares de String em objetos da Classe especificada, matrizes de String em matrizes da Classe especificada.
Commons-Lang : ArrayUtils -> Operações em matrizes, matrizes primitivas (como int []) e matrizes wrapper primitivas (como Integer []).
Estrutura Spring : O Spring oferece um excelente suporte para PropertyEditors, que também podem ser usados para transformar objetos de / para Strings.
Dozer : O Dozer é um mapeador poderoso, mas simples, de Java Bean para Java Bean que copia recursivamente dados de um objeto para outro. Normalmente, esses Java Beans serão de diferentes tipos complexos.
ModelMapper : ModelMapper é uma estrutura inteligente de mapeamento de objetos que mapeia automaticamente objetos entre si. Ele usa uma abordagem baseada em convenções para mapear objetos enquanto fornece uma API segura de refatoração simples para lidar com casos de uso específicos.
MapStruct : MapStruct é um gerador de código em tempo de compilação para mapeamentos de bean, resultando em código de mapeamento rápido (sem uso de reflexão ou similar), sem dependência e com segurança de tipo em tempo de execução.
Orika : O Orika usa geração de código de bytes para criar mapeadores rápidos com sobrecarga mínima.
Selma : gerador de código em tempo de compilação para mapeamentos
JMapper : geração de mapeador de beans usando anotação, XML ou API(parece morto, última atualização 2 anos atrás)Smooks : O Cartucho JavaBean Smooks permite criar e preencher objetos Java a partir dos dados da mensagem (por exemplo, vincular dados a) (sugerido pela superfilina nos comentários).(Não está mais em desenvolvimento ativo)Commons-Convert : O Commons-Convert visa fornecer uma única biblioteca dedicada à tarefa de converter um objeto de um tipo para outro. O primeiro estágio se concentrará nas conversões Objeto para String e String para Objeto. (parece morto, última atualização 2010)Transmorph : Transmorph é uma biblioteca java gratuita usada para converter um objeto Java de um tipo em um objeto de outro tipo (com outra assinatura, possivelmente parametrizada).(parece morto, última atualização de 2013)EZMorph : O EZMorph é uma biblioteca java simples para transformar um Objeto em outro Objeto. Ele suporta transformações para primitivos e objetos, para matrizes multidimensionais e transformações com o DynaBeans(parece morto, última atualização em 2008).Morph : Morph é uma estrutura Java que facilita a interoperabilidade interna de um aplicativo. À medida que a informação flui através de um aplicativo, ela passa por várias transformações. Morph fornece uma maneira padrão de implementar essas transformações.(parece morto, última atualização de 2008)Lorentz : Lorentz é uma estrutura genérica de conversão de objeto para objeto. Ele fornece uma API simples para converter objetos Java de um tipo em um objeto de outro tipo.(parece morto)OTOM : Com o OTOM, você pode copiar qualquer dado de qualquer objeto para qualquer outro objeto. As possibilidades são infinitas. Bem-vindo ao "outono".(parece morto)fonte
Outro é o Orika - https://github.com/orika-mapper/orika
fonte
ModelMapper é outra biblioteca que vale a pena conferir. O design do ModelMapper é diferente de outras bibliotecas, pois:
Confira o site ModelMapper para obter mais informações:
http://modelmapper.org
fonte
Use o Apache commons beanutils:
http://commons.apache.org/proper/commons-beanutils/
fonte
Há mais um mecanismo / estrutura de mapeamento Java Nomin: http://nomin.sourceforge.net .
fonte
Eu sugiro que você tente o JMapper Framework .
É um bean Java para o mapeador Java bean, permite executar a passagem de dados dinamicamente com anotações e / ou XML.
Com o JMapper, você pode:
fonte
Fico feliz em adicionar o Moo como uma opção, embora claramente eu esteja inclinado a isso: http://geoffreywiseman.github.com/Moo/
É muito fácil de usar para casos simples, razoavelmente capaz para casos mais complexos, embora ainda existam algumas áreas em que posso imaginar aprimorá-lo para ainda mais complexidades.
fonte
Você também pode tentar mapear a estrutura com base no Dozer, mas com a declaração de mapeamento do Excel. Eles têm algumas ferramentas e recursos interessantes adicionais. Verifique em http://openl-tablets.sf.net/mapper
fonte