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'ai utilis=C3=A9 au final. En gard= ant bien les m=C3=A9thodes techniques en visibilit=C3=A9 r=C3=A9duite, l= 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, "Antoine DESSAIGNE&q= uot; <<a href=3D"mailto:[email protected]">antoine.dessaigne@g= mail.com</a>> 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'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<Constraint> constraint= s;</div><div>=C2=A0 =C2=A0 @Transient</div><div>=C2=A0 =C2=A0 public List&l= t;Contraint> getContraints() { return this.contraints; }</div><div>=C2= =A0 =C2=A0 public void setConstraints(List<Contraint>=C2=A0contraints= ) { this.contraints =3D=C2=A0contraints; }</div> <div>=C2=A0 =C2=A0 @Column(name =3D "JSON")</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"><<a = href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>></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'ai l'impression que c'est pas possible, mais je pr=C3=A9f= =C3=A8re v=C3=A9rifier plusieurs fois.<br> <br>Concr=C3=A8tement, j'ai un objet du genre:<br>class MaClasse {<br><= div style=3D"margin-left:40px">String attribut;<br>List<Contrainte> c= ontraintes =3D new ArrayList();<br></div>}<br>Je cherche =C3=A0 d=C3=A9norm= aliser compl=C3=A8tement "contraintes" 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'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'est lui que je mappe. Je ne mappe pas "contraint= es", et je g=C3=A8re moi-m=C3=AAme l'int=C3=A9gration entre ces de= ux "propri=C3=A9t=C3=A9s" (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'avance.<span><font color=3D"#888888"><br clear=3D"all"= ><br>-- <br>Baptiste <Batmat> 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--