@Transient com JPA:3个主题!

Usar @Transient com JPA pode parecerfácil,mas existem 3 coisas que sevocêfizer,podem deixar seucódigoconfuso。 出售您的商品,请使用qualizade或qualitade出售prazo!

Por que JPA?

科莫图多vamos utilizar naprogramação,temos que entender o conceito,paranãotermos dor decabeçamais tarde。 UPA实用程序JPA基本知识Mapeamento Objeto-Relacional。 墨西哥,墨西哥共和国,美洲,美洲,欧洲,欧洲,欧洲,欧洲。 现在的基本知识:

@Transient com JPA

参加者将获得即时性证明,并通过JPA espera que todos os atributos de la estejam relacionados和uma coluna do banco。 Os atributos anotados com @Transientsãoumaexceçãoessa regra。 参加JPA的证明书,请在电子邮件中注明。 伟大的探索和挑战,请再给您一份重要的意见。

在isso上,请使用@Transient com JPA pode um sinal de que tem algo cheirando mal no seucódigoevocênãoestápercebendo。 快节奏,再往前冲动。 Vamos ver algunscenáriose suas alternativas。


1. Usar @Transient com JPA para definir um tipo de operação

umcenáriocomum。 在乌苏里奥大学学习时,应遵守自己的职责。 可以立即使用新的军刀,或者存在临时性武器,或者从根本上归因于瞬态。

Sevocêescreveu umcódigoassim,éuma boa hora para refatorar。 归类为Usuario的基本属性。 请确保您对西班牙的一切都感到满意。 佐治亚州歌剧院SalvarUsuario欧玛旗乌干达娱乐城。 阿莱姆·迪索(Alémdisso)

Nesse caso,提供各种通行证的,但不提供新的合同。 在墨西哥的代表处就读,并在使用情况下将其保存下来。 Entãonãofaz sentido葡萄状isso no seunegócio。 Seria muito melhor ter doismétodosseparados paracadaoperçãoe uma classe Usuario limpa。

Além disso, se você está recebendo a entidade de uma chamada externa ou da sua camada de apresentação, considere utilizar o padrão DTO.


2. Usar @Transient com JPA para passar um dado para validação

@Transient com JPAéquando percebe que precisa passar um dado apenas paravalidação,masnãoparapersistência。 Vejamos。

Nesse caso temos dois exemplos。 O atributos acima foram criados apenas para que sua camada denegóciofaçaalgumavalidação。 Provavelmente seria algo mais ou menos assim:

EsseCódigotem Alguns问题:

  • Primeiro,es Estes dois atributosnãotem de fato a ver com entestadequeástéto持久性。Depois,没有后端。 一封确认邮件会发送给服务对象,并发送电子邮件给其他代表。 一个使用条款和条件使用服务的附加条款,请在“选择”部分中选择“使用”,然后再选择“使用附加条款”。E porúltimo,que quer que esteja chamando essemétodopode burlar是有效的。 代表作的简单摄影电子邮件帕拉确认电子邮件, e marcar um true em aceitouTermosDeUso. Depois disso, faria a chamada. Sua validação só serviria帕拉dar uma falsa sensação de segurança.

Qual seriaentãoalternativa? 视乎情况而定:

  • Se você usa serviços rest, deixe que apresentação faça esse trabalho. Se quiser muito manter os atributos para lembrar ao usuário do seu serviço de fazer essas validações, considere receber uma DTO ao invés da sua entidade.
  • Se você usa algum framework como JSF, simplesmente faça essa validação no seu controller, sem criar atributos na classe.
  • No pior dos casos, se você ainda acredita ter alguma razão para fazer isso, utilize parâmetros separados, deixando sua entidade fora disso:

3. Usar @Transient com JPA para armazenar outras entidades temporariamente

@Transient com JPA costuma ser utilizado,éarmazenar uma lista de outras entidades。 示例:

出于对动机的诉求,muitas对mapeamentos bidirecionaisnãosãorecomendados提出了要求。 Isso faz com que guns programadores criem esse atributotransient para preencher quandonecessário。 在考虑“问题”的前提下,重新获得产权的条件。

大问题全岛essa listaépreenchida。 法索(Fazer isso),唱片公司(coalmentment ent)或唱片公司(cédigoque preencheu a lista)和唱片公司(utilocódigoque utilizou)。 米哈斯(Suha)

  • Se o consumidor da entidade Usuario for uma fronteira externa ao sistema, ou uma camada de apresentação, você pode utilizar uma DTO.
  • Se o consumidor for outra parte interna do sistema que tem acesso ao banco de dados, deixe que ela mesma recupere essa informação.
  • Considere utilizar um mapeamento bidirecional com FetchType.LAZY, e avalie quais seriam os impactos no seu código:
  • Raramentenãoserápossívelutilizar uma das alternativas citadas acima。 Casovocêainda acredite quenãotem outrasolução,preencha essa lista apenas emmétodosqueexplamente fazem isso,e documenta bem na classe Usuario:

Uso de DTO

Algumas vezes nesse artigo citei o uso do padrão DTO. Ele foi criado especificamente para isso: transferir informações entre subsistemas, ou fronteiras claras da aplicação. A única razão válida que vejo para não utilizá-lo é o aumento na quantidade de código. O chamado boilerplate code. Porém, ao utilizá-lo, você evita usar @Transient com JPA.

Além disso, você não precisa escrever todo o código para converter uma entidade para DTO. Existem muitas ferramentas para ajudar nesse mapeamento, que facilitam esse trabalho e suavizam o impacto no tamanho do código. Você pode encontrar uma lista dessas ferramentas aqui, e muitas outras na internet.


Quando usar @Transient com JPA

Bom,enãonãotem nenhum caso bom para se utilizar @Transient? 塔姆·纳·韦德塔 Umcenárioonde essaanotaçãoémuitoútil,épara fazer快取de atributos de outros atributos。 乌苏里奥(Usuario)的经典班级,épossívelfazer algo do tipo:

简单到极致,简单到完美无缺。 Afinal,仅次于本国的人,就归因于null或atributo nome。 马斯(Mas),表演者(Es umcenárioonde o ganho)和表演者(ééumaopçãoválida)。


抛物线! 阿哥拉vocêsabe usar @Transient com JPA,pod entregareu杰梅斯拉皮多Ë渐强器呐苏阿卡雷拉。

Quer receber minhas melhores dicas para escrever código de alta qualidade e entregar projetos no prazo? Então acesse aqui.

Quer aprender a melhorar seu código diariamente? Então me segue no twitter : https://twitter.com/rinaldodev


Ëvocê?Conhece开发环境库迪亚多 com @Transient com JPA?Tem 迪卡斯德昂德Podemos usar sem problemas?Compartilhe também! Deixe um 评论!

Gostou做que aprendeu? Compartilhe com胜过Devs!

from: https://dev.to//rinaldodev/transient-com-jpa-3-coisas-que-voc-no-deve-fazer-32k4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值