自关联的例子:我觉得自关联好像就是当表存在自包含关系就是自己还可以再细分的情况下应用的!一直不知道怎么理解好,暂时就这么理解吧!
业务逻辑:<o:p></o:p>
书籍的种类,本身是自关联的关系,如下图所示:<o:p></o:p>
所有书籍:<o:p></o:p>
历史书籍<o:p></o:p>
音乐书籍<o:p></o:p>
钢琴书籍<o:p></o:p>
烹饪书籍<o:p></o:p>
美食书籍
1. Books类的源程序
代码的目录结构
Classes
Hibernate.property
/mypack
Books.java
BusinessService.java
Books.hbm.xml
book.java
- package mypack;
- import java.util.Set;
- import java.io.Serializable;
- public class Books
- implements Serializable {
- /**
- * 默认构造函数
- */
- public Books() {
- }
- /** 主健id */
- private Long id;
- /** 书籍名称 */
- private String name;
- /** 父书籍 */
- private mypack.Books parentCategory;
- /** 子集合 */
- private Set childCategories;
- /** 完整构造函数 */
- public Books(String name, mypack.Books parentCategory, Set childCategories) {
- this.name = name;
- this.parentCategory
- = parentCategory;
- this.childCategories = childCategories;
- }
- /** 最小构造函数 */
- public Books(Set childCategories) {
- this.childCategories = childCategories;
- }
- public Long getId() {
- return this.id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public mypack.Books getParentCategory() {
- return this.parentCategory;
- }
- public void setParentCategory(mypack.Books parentCategory) {
- this.parentCategory = parentCategory;
- }
- public Set getChildCategories() {
- return this.childCategories;
- }
- public void setChildCategories(Set childCategories) {
- this.childCategories = childCategories;
- }
- }
映射文件,放在classes/mypack下<o:p></o:p>
Books.hbm.xml
- xml versio
- n="1.0"?>
- PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
- <hibernate-mapping >
- <class name="mypack.Books" table="books" >
- <id name="id" type="long" column="ID">
- <generator class="increment"/>
- id>
- <property name="name" type="string" >
- <column name="NAME" length="15" />
- property>
- <set
- name="childCategories"
- cascade="save-update"
- inverse="true"
- >
- <key column="CATEGORY_ID" />
- <one-to-many class="mypack.Books" />
- set>
- <many-to-one
- name="parentCategory"
- column="CATEGORY_ID"
- class="mypack.Books"
- cascade="save-update"
- />
- class>
- hibernate-mapping>
数据库Schema<o:p></o:p>
数据库Schema
<o:p></o:p>
- Create table books(
- Id number(10) not null,
- Name varchar2(64),
- Category_id number(10),
- Primary key(id)
- );
- 1. hibernate.property
- hibernate.property
- hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialect
- hibernate.dialect net.sf.hibernate.dialect.OracleDialect
- hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
- hibernate.connection.username testpm
- hibernate.connection.password testpm
- hibernate.connection.url jdbc:oracle:thin:@localhost:1521:wsy