Raible's Wiki
Raible Designs AppFuseHomepage- Korean - Chinese - Italian - Japanese QuickStart Guide User Guide Tutorials Other ApplicationsStruts ResumeSecurity Example Struts Menu
Set your name in
UserPreferences
Referenced by
JSPWiki v2.2.33
Hide Menu |
This is version 61.
It is not the current version, and thus it cannot be edited. About this tutorialThis 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 [#1]In this example, the Weblog object is used to indentify a person's blog. This class has the following properties:
The Entry object is used to contain a listing of a person's blog entries in their Weblog. This class contains the following properties:
The first thing you need to do in this tutorial is these two object to persist. Create both a Weblog.java class and an Entry.java class (in the src/dao/**/model directory). The necessary XDoclet tags for these entities is included on the getter method's javadoc.
plugin. For IDEA, the first two are built into the "Generate..." dialog, and toString() is a plugin you can download.
[Many-to-One] Create a new Category object and modify Entry.java to use it [#2]A category object will act as an entity for persisting category information about weblog entries. A category object will consist of an id (primary key), category name, and a description. Each category can have many entries. The many-to-one relationship between entry and category can be established using XDoclet tags. Hibernate relationships can typically be established on either side of the relationship or as a bi-directional one as well. For our purposes,this relationship will be maintained by an extra property and collection held by Entry. The list of possible categories for a weblog entry will eventually be represented as a drop-down on the UI.
[One-to-Many] A Weblog object can have many Entries [#3]Modify the Weblog object and Entry object to represent the multiplicity of a weblog that can have many entries. This relationship is set on the Weblog class using a list. XDoclet tags are used to establish this relationship using a bag as the Hibernate collection type.
The Entry class is modified slightly to provide a placeholder for the relationships between Weblog and Entry.
[Many-to-Many] [#4]The Weblog system that we are developing allows one additional bit of functionality. A particular Weblog can have many Users. Basically the idea is of a shared weblog that is a place where many users can express themselves about a particular topic of interest. For this bit of functionality the User object will be modified to have a many-to-many relationship with Weblog. Add the following users property and accessor methods to Weblog.java.
User modificationsIn addition to allow navigation from a Weblog object to their list of users, you need to add a Set of Weblogs to the User object - allowing that path of navigation as well. Modify User.java to add a weblogs Set and accessor methods.
[DAO Stuff] [#5]In order to test that all of this works, you need to create some test classes, add some sample data, develop some DAO interfaces, and create hibernate DAO classes. WeblogDaoTestLet's start with WeblogDaoTest.java class. Create this class in test/dao/**/dao and fill it with the following code.
All of these tests relies on some sample data, so add the following XML to metadata/sql/sample-data.xml. <table name='weblog'> <column>weblog_id</column> <column>blog_title</column> <column>date_created</column> <column>username</column> <row> <value>1</value> <value><![CDATA[Sponge Bob is Cool]]></value> <value>2004-03-31</value> <value>tomcat</value> </row> <row> <value>2</value> <value><![CDATA[Java Development = Fun]]></value> <value>2005-01-05</value> <value>mraible</value> </row> </table> <table name='weblog_user'> <column>weblog_id</column> <column>username</column> <row> <value>1</value> <value>tomcat</value> </row> <row> <value>1</value> <value>mraible</value> </row> <row> <value>2</value> <value>mraible</value> </row> </table> <table name='category'> <column>category_id</column> <column>category_name</column> <column>category_description</column> <row> <value>1</value> <value><![CDATA[Struts v. Spring MVC]]></value> <value><![CDATA[Comparisons between two interpretations of the MVC Design Pattern]]></value> </row> <row> <value>2</value> <value><![CDATA[Cycling Notes]]></value> <value><![CDATA[All about cycling in the US.]]></value> </row> <row> <value>3</value> <value><![CDATA[Cyclocross]]></value> <value><![CDATA[Bog Trotters Unite!]]></value> </row> </table> <table name='entry'> <column>entry_id</column> <column>entry_text</column> <column>time_created</column> <column>weblog_id</column> <column>category_id</column> <row> <value>1</value> <value><![CDATA[Testing]]></value> <value>2005-04-11</value> <value>1</value> <value>1</value> </row> <row> <value>2</value> <value><![CDATA[Test Value]]></value> <value>2005-04-12</value> <value>1</value> <value>1</value> </row> <row> <value>3</value> <value><![CDATA[Test Value 3]]></value> <value>2005-04-12</value> <value>2</value> <value>3</value> </row> </table> Before this test will compile, you need to create the WeblogDAO interface and implementation. Create a WeblogDAO.java interface in src/dao/**/dao:
Then create the Hibernate implementation of this interface in the src/dao/**/dao/hibernate directory.
Configure Spring for WeblogDAOModifications need to be made in applicationContext-hibernate.xml for the 3 new entities you created in this tutorial.
Also, you need to add the "weblogDAO" bean definition.
After making these changes, you should be able to run ant test-dao -Dtestcase=WeblogDAO. All of the tests should pass successfully. Lazy-Loading Issues [#6]Managing relationships and indexed properties in the UI [#7]Attachments:
|
||||||||||||||||