我们建一个简单的表如下:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | varchar(32) |      | PRI |         |       |
| name  | varchar(80) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

manager的接口

 1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM package com.martin.pdo;
 2Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 3Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM import java.util.List;
 4Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 5Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM /** *//**
 6Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @author martin.xus
 7Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  */

 8Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM public interface UserManager Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 9Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public User load(String id);
10Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
11Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public List loadByName(String name);
12Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
13Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void add(User user);
14Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
15Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void remove(User user);
16Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM }

17Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 


User,在这里,我们的user已经不在是简单的getter&setter,我们引用了一个manager的对象
并且通过spring注入给它,供它使用,这样我们需要操作用户时,就如下一样

添加新用户



1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM User user = (User) context.getBean("user");
2Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM User _u1 = new User();
3Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM //Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
4Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM user.getManager().add(_u1);
5Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 


读取用户
1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM User _u2 = (User) user.getManager().loadByName("martin xus").get(0);


让User带上manager的功能,这样,我们便不再需要主动的去声明manager。

相对而言,如果我们只是在domain object种getter&setter,就需要如下。

1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM UserManager userManager = (userManager ) context.getBean("userManager ");
2Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM userManager.saveUser(_u1);


整代码如下:

  1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM package com.martin.pdo;
  2Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
  3Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM import java.io.Serializable;
  4Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
  5Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM /** *//**
  6Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @author martin.xus
  7Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @hibernate.class table="t_user"
  8Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @spring.bean name="user"
  9Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @spring.property name="manager" ref="userManager"
 10Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  */

 11Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM public class User implements Serializable Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 12Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 13Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 14Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @hibernate.id generator-class="uuid.hex"
 15Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * length="32"
 16Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * column="user_id"
 17Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 18Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     private String id;
 19Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 20Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 21Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @hibernate.property column="user_name"
 22Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * length="80"
 23Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 24Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     private String name;
 25Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 26Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 27Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @hibernate.property
 28Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 29Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     private char sex;
 30Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 31Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 32Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @hibernate.property
 33Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 34Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     private int age;
 35Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     private UserManager manager = null;
 36Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 37Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 38Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @return Returns the manager.
 39Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 40Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public UserManager getManager() Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 41Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         return manager;
 42Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 43Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 44Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 45Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @param manager The manager to set.
 46Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 47Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void setManager(UserManager manager) Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 48Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         this.manager = manager;
 49Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 50Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 51Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 52Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @return Returns the age.
 53Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 54Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public int getAge() Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 55Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         return age;
 56Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 57Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 58Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 59Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @param age The age to set.
 60Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 61Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void setAge(int age) Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 62Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         this.age = age;
 63Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 64Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 65Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 66Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @return Returns the id.
 67Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 68Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public String getId() Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 69Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         return id;
 70Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 71Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 72Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 73Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @param id The id to set.
 74Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 75Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void setId(String id) Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 76Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         this.id = id;
 77Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 78Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 79Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 80Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @return Returns the name.
 81Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 82Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public String getName() Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 83Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         return name;
 84Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 85Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 86Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 87Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @param name The name to set.
 88Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 89Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void setName(String name) Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 90Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         this.name = name;
 91Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 92Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 93Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
 94Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @return Returns the sex.
 95Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

 96Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public char getSex() Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
 97Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         return sex;
 98Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

 99Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
100Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     /** *//**
101Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      * @param sex The sex to set.
102Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM      */

103Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     public void setSex(char sex) Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM {
104Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM         this.sex = sex;
105Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM     }

106Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
107Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM }

108Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 


UserManager

 1Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM package com.martin.pdo;
 2Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 3Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 4Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 5Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM import java.util.List;
 6Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM 
 7Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM /** *//**
 8Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM  * @spring.bean name="userManager"
 9Domain Object 的思考(一)
            
    
    
        HibernateSpringBeanORM &nb