Re: Sérialisation custom avec JPA

Baptiste MATHUS <[email protected]> Tue, 22 Nov 2011 18:33:02 +0100
Newsgroups gmane.comp.java.french.general
Message-ID <CANWgJS6EinxBeRMr+TUKBO0xNkkhorwhCNS+9aOkZi4LTbuS9g@mail.gmail.com>
--000325575812220d8b04b2563219
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Salut =C3=A0 tous, salut Toutoune :)
Effectivement, c cette approche que j'ai utilis=C3=A9 au final. En gardant =
bien
les m=C3=A9thodes techniques en visibilit=C3=A9 r=C3=A9duite, l'essentiel e=
st pr=C3=A9serv=C3=A9.

Merci =C3=A0 tous
Le 18 nov. 2011 11:54, "Antoine DESSAIGNE" <[email protected]> a
=C3=A9crit :

> Salut Baptiste,
>
> Je n'ai pas test=C3=A9 mais je mettrai les annotations JPA sur les getter=
s au
> lieu des attributs. Puis je cr=C3=A9erai de faux getter et setter pour me=
ttre =C3=A0
> jour et stocker la version JSON.
>
> Un truc dans ce genre:
> @Entity
> class MyClass {
>     private String attribute;
>     public String getAttribute() { return this.attribute; }
>     public void setAttribute(String attribute) { this.attribute =3D
> attribute; }
>
>     private List<Constraint> constraints;
>     @Transient
>     public List<Contraint> getContraints() { return this.contraints; }
>     public void setConstraints(List<Contraint> contraints) {
> this.contraints =3D contraints; }
>     @Column(name =3D "JSON")
>     String getStringifiedConstraints() { return
> stringify(this.constraints); }
>     void setStringifiedConstraints(String constraints) { this.constraints
> =3D objectify(constraints); }
> }
>
> Antoine.
>
> Le 17 novembre 2011 17:24, Baptiste MATHUS <[email protected]> a =C3=A9crit :
>
>> Salut =C3=A0 tous,
>>
>> En r=C3=A9sum=C3=A9, je cherche =C3=A0 faire ce que permettent les UserT=
ype Hibernate,
>> mais de fa=C3=A7on standard avec JPA.
>> J'ai l'impression que c'est pas possible, mais je pr=C3=A9f=C3=A8re v=C3=
=A9rifier
>> plusieurs fois.
>>
>> Concr=C3=A8tement, j'ai un objet du genre:
>> class MaClasse {
>> String attribut;
>> List<Contrainte> contraintes =3D new ArrayList();
>> }
>> Je cherche =C3=A0 d=C3=A9normaliser compl=C3=A8tement "contraintes" et =
=C3=A0 le stocker en
>> JSON dans une unique colonne de la table correspondant =C3=A0 MaClasse.
>>
>> Est-ce que j'ai une possibilit=C3=A9 pour faire =C3=A7a proprement avec =
un handler
>> de s=C3=A9rialisation =C3=A0 la UserType Hibernate ?
>>
>> La solution alternative que je vois est la suivante : je cr=C3=A9e une a=
utre
>> m=C3=A9thode de visibilit=C3=A9 r=C3=A9duite pour g=C3=A9rer stockage&ch=
argement,et c'est lui
>> que je mappe. Je ne mappe pas "contraintes", et je g=C3=A8re moi-m=C3=AA=
me
>> l'int=C3=A9gration entre ces deux "propri=C3=A9t=C3=A9s" (je sais pas si=
 je suis tr=C3=A8s
>> clair).
>>
>> Est-ce que cette deuxi=C3=A8me solution est la seule possible avec JPA ?
>>
>> Merci d'avance.
>>
>> --
>> Baptiste <Batmat> MATHUS - http://batmat.net
>> Sauvez un arbre,
>> Mangez un castor !
>>
>
>

--000325575812220d8b04b2563219
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<p>Salut =C3=A0 tous, salut Toutoune :)<br>
Effectivement, c cette approche que j&#39;ai utilis=C3=A9 au final. En gard=
ant bien les m=C3=A9thodes techniques en visibilit=C3=A9 r=C3=A9duite, l&#3=
9;essentiel est pr=C3=A9serv=C3=A9.</p>
<p>Merci =C3=A0 tous</p>
<div class=3D"gmail_quote">Le 18 nov. 2011 11:54, &quot;Antoine DESSAIGNE&q=
uot; &lt;<a href=3D"mailto:[email protected]">antoine.dessaigne@g=
mail.com</a>&gt; a =C3=A9crit=C2=A0:<br type=3D"attribution"><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p=
adding-left:1ex">
Salut Baptiste,<div><br></div><div>Je n&#39;ai pas test=C3=A9 mais je mettr=
ai les annotations JPA sur les getters au lieu des attributs. Puis je cr=C3=
=A9erai de faux getter et setter pour mettre =C3=A0 jour et stocker la vers=
ion JSON.</div>

<div><br></div><div>Un truc dans ce genre:</div><div>@Entity</div><div>clas=
s MyClass {</div><div>=C2=A0 =C2=A0 private String attribute;</div><div>=C2=
=A0 =C2=A0 public String getAttribute() { return this.attribute; }</div><di=
v>=C2=A0 =C2=A0 public void setAttribute(String attribute) { this.attribute=
 =3D attribute; }</div>

<div><br></div><div>=C2=A0 =C2=A0 private List&lt;Constraint&gt; constraint=
s;</div><div>=C2=A0 =C2=A0 @Transient</div><div>=C2=A0 =C2=A0 public List&l=
t;Contraint&gt; getContraints() { return this.contraints; }</div><div>=C2=
=A0 =C2=A0 public void setConstraints(List&lt;Contraint&gt;=C2=A0contraints=
) { this.contraints =3D=C2=A0contraints; }</div>

<div>=C2=A0 =C2=A0 @Column(name =3D &quot;JSON&quot;)</div><div>=C2=A0 =C2=
=A0 String getStringifiedConstraints() { return stringify(this.constraints)=
; }</div><div>=C2=A0 =C2=A0 void setStringifiedConstraints(String constrain=
ts) { this.constraints =3D objectify(constraints); }</div>

<div>}</div><div><br></div><div>Antoine.</div><div><br><div class=3D"gmail_=
quote">Le 17 novembre 2011 17:24, Baptiste MATHUS <span dir=3D"ltr">&lt;<a =
href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&gt;</span=
> a =C3=A9crit :<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Salut =C3=A0 tous,<br><br>En r=C3=A9sum=C3=A9, je cherche =C3=A0 faire ce q=
ue permettent les UserType Hibernate, mais de fa=C3=A7on standard avec JPA.=
<br>J&#39;ai l&#39;impression que c&#39;est pas possible, mais je pr=C3=A9f=
=C3=A8re v=C3=A9rifier plusieurs fois.<br>



<br>Concr=C3=A8tement, j&#39;ai un objet du genre:<br>class MaClasse {<br><=
div style=3D"margin-left:40px">String attribut;<br>List&lt;Contrainte&gt; c=
ontraintes =3D new ArrayList();<br></div>}<br>Je cherche =C3=A0 d=C3=A9norm=
aliser compl=C3=A8tement &quot;contraintes&quot; et =C3=A0 le stocker en JS=
ON dans une unique colonne de la table correspondant =C3=A0 MaClasse.<br>



<br>Est-ce que j&#39;ai une possibilit=C3=A9 pour faire =C3=A7a proprement =
avec un handler de s=C3=A9rialisation =C3=A0 la UserType Hibernate ?<br><br=
>La solution alternative que je vois est la suivante : je cr=C3=A9e une aut=
re m=C3=A9thode de visibilit=C3=A9 r=C3=A9duite pour g=C3=A9rer stockage&am=
p;chargement,et c&#39;est lui que je mappe. Je ne mappe pas &quot;contraint=
es&quot;, et je g=C3=A8re moi-m=C3=AAme l&#39;int=C3=A9gration entre ces de=
ux &quot;propri=C3=A9t=C3=A9s&quot; (je sais pas si je suis tr=C3=A8s clair=
).<br>



<br>Est-ce que cette deuxi=C3=A8me solution est la seule possible avec JPA =
?<br><br>Merci d&#39;avance.<span><font color=3D"#888888"><br clear=3D"all"=
><br>-- <br>Baptiste &lt;Batmat&gt; MATHUS=C2=A0-=C2=A0<a href=3D"http://ba=
tmat.net" target=3D"_blank">http://batmat.net</a><br>

Sauvez un arbre,<br>

Mangez un castor=C2=A0!<br>
</font></span></blockquote></div><br></div>
</blockquote></div>

--000325575812220d8b04b2563219--