HibernateRelationships |
|
Your trail: |
This is version 11.
It is not the current version, and thus it cannot be edited.
[Back to current version]
[Restore this version]
About this tutorial
This is a tutorial to show how to create and manage Hibernate relationships within AppFuse. This tutorial was written for AppFuse 1.8 and the AppGen pieces may not work with previous versions.
Table of Contents
- Create Weblog.java, Entry.java and add XDoclet tags
- [Many-to-One] Create a new Category object and modify Entry.java to use it
- [One-to-Many] A Weblog object can have many Entries
- [Many-to-Many] ???
- Lazy-Loading Issues
- Managing relationships and indexed properties in the UI
Create Weblog.java, Entry.java and add XDoclet tags
For our purposes, the Weblog entity is a list of available weblogs. A Weblog object has the following properties an id, a username, a dateCreated, and a blogTitle. Every Entry object has an id, a text, and a timeCreated property.
The first thing to do is create some objects to persist. Let's create both a "Weblog" object and an Entry object (in the src/dao/**/model directory).
package org.appfuse.model;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
* @hibernate.class table="weblog"
*/
public class Weblog extends BaseObject {
private Long id;
private String username;
private Date dateCreated;
private String blogTitle;
private Integer version;
/*
* Generate your getters and setters using your favorite IDE: In Eclipse:
* Right-click -> Source -> Generate Getters and Setters
*/
/**
* @return Returns the blogTitle.
*
* @hibernate.property column="blog_title"
*/
public String getBlogTitle() {
return blogTitle;
}
/**
* @param blogTitle
* The blogTitle to set.
*/
public void setBlogTitle(String blogTitle) {
this.blogTitle = blogTitle;
}
/**
* @return Returns the dateCreated.
*
* @hibernate.property column="date_created"
*/
public Date getDateCreated() {
return dateCreated;
}
/**
* @param dateCreated
* The dateCreated to set.
*/
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
/**
* @return Returns the id.
*
* @hibernate.id column="weblog_id" generator-class="native"
* unsaved-value="null"
*/
public Long getId() {
return id;
}
/**
* @param id
* The id to set.
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return Returns the username.
*/
public String getUsername() {
return username;
}
/**
* @param username
* The username to set.
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return Returns the version.
*
* @hibernate.version
*/
public Integer getVersion() {
return version;
}
/**
* @param version
* The version to set.
*/
public void setVersion(Integer version) {
this.version = version;
}
/**
* @see java.lang.Object#equals(Object)
*/
public boolean equals(Object object) {
if (!(object instanceof Weblog)) {
return false;
}
Weblog rhs = (Weblog) object;
return new EqualsBuilder().append(this.blogTitle, rhs.blogTitle)
.append(this.username, rhs.username).append(this.dateCreated,
rhs.dateCreated).append(this.id, rhs.id).append(
this.version, rhs.version).isEquals();
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return new HashCodeBuilder(-1229851019, 1071684527).append(
this.blogTitle).append(this.username).append(this.dateCreated)
.append(this.id).append(this.version).toHashCode();
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", this.id).append("version", this.version).append(
"username", this.username).append("blogTitle",
this.blogTitle).append("dateCreated", this.dateCreated)
.toString();
}
}
|
package org.appfuse.model;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
* @hibernate.class table="entry"
*/
public class Entry extends BaseObject {
private Long id;
private String text;
private Date timeCreated;
private Integer version;
/**
* @return Returns the id.
*
* @hibernate.id column="entry_id" generator-class="native"
* unsaved-value="null"
*/
public Long getId() {
return id;
}
/**
* @param id
* The id to set.
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return Returns the text.
*
* @hibernate.property column="text"
*/
public String getText() {
return text;
}
/**
* @param text
* The text to set.
*/
public void setText(String text) {
this.text = text;
}
/**
* @return Returns the timeCreated.
*
* @hibernate.property column="time_create"
*/
public Date getTimeCreated() {
return timeCreated;
}
/**
* @param timeCreated
* The timeCreated to set.
*/
public void setTimeCreated(Date timeCreated) {
this.timeCreated = timeCreated;
}
/**
* @return Returns the version.
*
* @hibernate.version
*/
public Integer getVersion() {
return version;
}
/**
* @param version
* The version to set.
*/
public void setVersion(Integer version) {
this.version = version;
}
/**
* @see java.lang.Object#equals(Object)
*/
public boolean equals(Object object) {
if (!(object instanceof Entry)) {
return false;
}
Entry rhs = (Entry) object;
return new EqualsBuilder().append(this.text, rhs.text).append(
this.timeCreated, rhs.timeCreated).append(this.id, rhs.id)
.append(this.version, rhs.version).isEquals();
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return new HashCodeBuilder(-880342185, -1668369001).append(this.text)
.append(this.timeCreated).append(this.id).append(this.version)
.toHashCode();
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("text", this.text).append("id", this.id).append(
"version", this.version).append("timeCreated",
this.timeCreated).toString();
}
}
|
[Many-to-One] Create a new Category object and modify Entry.java to use it
[One-to-Many] A Weblog object can have many Entries
[Many-to-Many] ???
Lazy-Loading Issues
Managing relationships and indexed properties in the UI
Attachments:
|