XML Hell, the phenomenon that killed struts, and fear of which launch Seam. Annotations were the savior, so the prophets proclaimed. But have we gone too far? You decide.
/**This is a method of a Hibernate ORM object which can be serialized via JAXB. Also utilizes Hibernate validation, an i18n Message manager and EqualsMember, which means this element is a member of the set of fields denoting object equality. Somehow, I'm starting to miss XML...
* @return related details for this person
*/
@ManyToOne( fetch = FetchType.EAGER, cascade =
{ javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.MERGE } )
@JoinColumn( name = "PERSON_DETAIL", nullable = false )
@Where( clause = "ACTV_ID = 'T'" )
@Cascade( { CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE } )
@Cache( usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE )
@EqualsMember
@NotNull
@Valid
@Message( "${msg.invalid.person.detail}" )
@XmlElement( name = "person-detail", required = true )
public PersonDetail getPersonDetail()
{
return personDetail;
}








3 comments:
I've been calling this "annotation buildup" myself.
ghaaaaaaark!
i think we are going to declare annotations which the class has in another dedicated files and then those files will turn into dsl-specific xml-like files again !!! looop :-]
That is hellish, and it gets even worse if you consider that the annotations:
@Column(nullable = false )
@NotNull
@Basic(optional=true)
can be configured to contradict each other, for example:
@Column(nullable = false)
@NotNull
@Basic(optional=true)
or:
@NotNull
@Basic(optional=true)
or
@Column(nullable = false )
@Basic(optional=false)
Why so much redundancy? Nobody knows, nobody cares, and nobody deals with it in a consistent way.
They do not even deal with this consistently even if you use only 1 of this confusing annotations: @Column. For example:
@Column(nullable = false ) is an schema level hint acording to the spec, but while EclipseLink respects that, Hibernates treats it as if were an object level validation.
Post a Comment