我们建一个简单的表如下:
+-------+-------------+------+-----+---------+-------+ | 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的接口
1
package com.martin.pdo;
2![](/Images/OutliningIndicators/None.gif)
3
import java.util.List;
4![](/Images/OutliningIndicators/None.gif)
5
/**
6
* @author martin.xus
7
*/
8
public interface UserManager {
9
public User load(String id);
10![](/Images/OutliningIndicators/InBlock.gif)
11
public List loadByName(String name);
12![](/Images/OutliningIndicators/InBlock.gif)
13
public void add(User user);
14![](/Images/OutliningIndicators/InBlock.gif)
15
public void remove(User user);
16
}
17![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
17
![](/Images/OutliningIndicators/None.gif)
User,在这里,我们的user已经不在是简单的getter&setter,我们引用了一个manager的对象
并且通过spring注入给它,供它使用,这样我们需要操作用户时,就如下一样
添加新用户
1User user = (User) context.getBean("user");
2User _u1 = new User();
3//
4user.getManager().add(_u1);
5
读取用户1User _u2 = (User) user.getManager().loadByName("martin xus").get(0);
让User带上manager的功能,这样,我们便不再需要主动的去声明manager。
相对而言,如果我们只是在domain object种getter&setter,就需要如下。
1
UserManager userManager = (userManager ) context.getBean("userManager ");
2
userManager.saveUser(_u1);
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
整代码如下:
1
package com.martin.pdo;
2![](/Images/OutliningIndicators/None.gif)
3
import java.io.Serializable;
4![](/Images/OutliningIndicators/None.gif)
5
/**
6
* @author martin.xus
7
* @hibernate.class table="t_user"
8
* @spring.bean name="user"
9
* @spring.property name="manager" ref="userManager"
10
*/
11
public class User implements Serializable {
12![](/Images/OutliningIndicators/InBlock.gif)
13
/**
14
* @hibernate.id generator-class="uuid.hex"
15
* length="32"
16
* column="user_id"
17
*/
18
private String id;
19![](/Images/OutliningIndicators/InBlock.gif)
20
/**
21
* @hibernate.property column="user_name"
22
* length="80"
23
*/
24
private String name;
25![](/Images/OutliningIndicators/InBlock.gif)
26
/**
27
* @hibernate.property
28
*/
29
private char sex;
30![](/Images/OutliningIndicators/InBlock.gif)
31
/**
32
* @hibernate.property
33
*/
34
private int age;
35
private UserManager manager = null;
36![](/Images/OutliningIndicators/InBlock.gif)
37
/**
38
* @return Returns the manager.
39
*/
40
public UserManager getManager() {
41
return manager;
42
}
43![](/Images/OutliningIndicators/InBlock.gif)
44
/**
45
* @param manager The manager to set.
46
*/
47
public void setManager(UserManager manager) {
48
this.manager = manager;
49
}
50![](/Images/OutliningIndicators/InBlock.gif)
51
/**
52
* @return Returns the age.
53
*/
54
public int getAge() {
55
return age;
56
}
57![](/Images/OutliningIndicators/InBlock.gif)
58
/**
59
* @param age The age to set.
60
*/
61
public void setAge(int age) {
62
this.age = age;
63
}
64![](/Images/OutliningIndicators/InBlock.gif)
65
/**
66
* @return Returns the id.
67
*/
68
public String getId() {
69
return id;
70
}
71![](/Images/OutliningIndicators/InBlock.gif)
72
/**
73
* @param id The id to set.
74
*/
75
public void setId(String id) {
76
this.id = id;
77
}
78![](/Images/OutliningIndicators/InBlock.gif)
79
/**
80
* @return Returns the name.
81
*/
82
public String getName() {
83
return name;
84
}
85![](/Images/OutliningIndicators/InBlock.gif)
86
/**
87
* @param name The name to set.
88
*/
89
public void setName(String name) {
90
this.name = name;
91
}
92![](/Images/OutliningIndicators/InBlock.gif)
93
/**
94
* @return Returns the sex.
95
*/
96
public char getSex() {
97
return sex;
98
}
99![](/Images/OutliningIndicators/InBlock.gif)
100
/**
101
* @param sex The sex to set.
102
*/
103
public void setSex(char sex) {
104
this.sex = sex;
105
}
106![](/Images/OutliningIndicators/InBlock.gif)
107
}
108![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
108
![](/Images/OutliningIndicators/None.gif)
UserManager
1
package com.martin.pdo;
2![](/Images/OutliningIndicators/None.gif)
3
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
4![](/Images/OutliningIndicators/None.gif)
5
import java.util.List;
6![](/Images/OutliningIndicators/None.gif)
7
/**
8
* @spring.bean name="userManager"
9
&nb
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
相关推荐
模型驱动设计(Model-Driven Design)是DDD的核心理念之一,强调基于模型的思考和迭代。在DDD中,模型不仅是代码的蓝图,也是项目沟通的基础。模型驱动设计要求开发人员必须将模型具体化,并在代码中得以体现。 ...
8. 领域对象的生命周期(Lifecycle of a Domain Object):阐述了领域对象在软件中的生命周期管理。 9. 聚合(Aggregates):一组相关对象的集合,用于维护数据的完整性和一致性。 10. 工厂(Factories)、仓库...
最后,思考具体算法意味着需要深入研究各种可能的迁移学习策略。这些可能包括浅层迁移,如特征选择和重新加权;深度迁移,如预训练模型的微调;或者更多先进的方法,如对抗性训练、多任务学习和元学习。每种方法都有...
因此我们要以一种新的思维方式来重新思考Web开发,Rails、Django和TurboGears这样的动态框架给我们铺平了道路。Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,...
- **里程碑之一**:2004年,Eric Evans出版了《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software),标志着领域驱动设计(DDD)正式诞生。这本书不仅...
4. 抽象与具体相结合:通过通用语言(Ubiquitous Language)让领域专家和开发人员共享相同的思考方式,同时保持代码的可读性和可维护性。 在“dddquickly-chinese-2014version.pdf”这本书中,Evans会进一步解释...
以上内容详细介绍了JavaScript针对Cookie的基本操作方法,包括设置、获取和删除Cookie的具体实现细节,以及一些扩展功能的思考。通过这些技巧,开发者可以更好地管理和利用Cookie,以提高Web应用程序的功能性和用户...
- 分析恶意DNS流量和域名生成算法(Domain Generation Algorithms, DGA)。 20. 数据分析与可视化:谁是安全圈的吃鸡第一人 - 展示如何通过数据分析和可视化技术来提升安全分析能力。 21. 虎鲸杯电子取证大赛...