Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Java Persistence/Converting hibernate xml-mapping to JPA annotations

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

foo.hbm.xmlFoo.java<class name="Foo">@Entity public class Foo // or: @Entity(name="Foo") public class CanBeNotFoo // or:<class name="Foo" table="NotFoo">@Entity(name="Foo") @Table(name="NotFoo") public class Foo<cache usage="read-write" region="directory" />@Entity(name="Foo") // ... @Cacheable @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "directory")<many-to-one name="test1" column="test_id" class="Test" /> <!-- default is lazy -->@ManyToOne(fetch = FetchType.LAZY) // default is EAGER @JoinColumn(name="test_id") Test test1;<property name="applyIfDone" column="apply_if_done" />@Column(name="apply_if_done") Boolean applyIfDone;<property name="apply" />@Column(name="apply") Boolean apply;<set name="testGroups" cascade="all-delete-orphan"> <cache usage="read-write" region="collection" /> <key column="group_id" /> <one-to-many class="GroupTest" /> </set>@OneToMany(orphanRemoval = true, cascade = {CascadeType.ALL}) // default fetch type is LAZY @JoinColumn(name = "foo_id") // backref column to owner in GroupTest (unidir/bidir) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "collection") private Collection<GroupTest> testGroups = ...<set name="targets" table="foo_targets"> <cache usage="read-write" region="collection" /> <key column="foo_id" /> <many-to-many class="Target" column="target_id" /> </set>// in Foo.java: @ManyToMany // default fetch type is LAZY @JoinTable(name = "foo_targets", joinColumns = { @JoinColumn(name = "foo_id") }, inverseJoinColumns = { @JoinColumn(name = "target_id") }) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "collection") private Collection<Target> targets = ... // in target.hbm.xml property "foos" is annotated with inverse="true" // in Target.java: @ManyToMany(mappedBy = "targets") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "collection") private Collection<Foo> foos = ...<set name="valuesStrings" table="TestValue"> <cache usage="read-write" region="collection" /> <key column="id" /> <element type="String" column="value" /> </set>@ElementCollection @CollectionTable(name = "TestValue", joinColumns = @JoinColumn(name = "id")) @Column(name = "value") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "collection") private Collection<String> valuesStrings = ...<joined-subclass name="Simple"> </joined-subclass>@Inheritance(strategy = InheritanceType.JOINED) public class Simple ...<set name="testGroups" ... inverse="true"> ... <one-to-many class="GroupTest" /> </set>// in file Foo.java: @OneToMany(mappedBy="fooBackRef") private Collection<GroupTest> testGroups = ... // in file GroupTest.java : class GroupTest { @ManyToOne @JoinColumn(name="foo_backref_id") Foo fooBackRef; ... }<set name="..." cascade="save-update"> ... </set>// if you using pure JPA or Hibernate >= 3.x @AnyToAny(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) // For old Hibernate or for Hibernate Session instead of JPA Entity Manager, add: @Cascade(value = org.hibernate.annotations.CascadeType.SAVE_UPDATE) Sources