我们可以让Domain Object更rich:)
1
package com.martin.pdo;
2![](/Images/OutliningIndicators/None.gif)
3
import java.io.Serializable;
4
import java.util.List;
5![](/Images/OutliningIndicators/None.gif)
6
/**
7
* @author martin.xus
8
* @hibernate.class table="t_user"
9
* @spring.bean name="user"
10
* @spring.property name="manager" ref="userManager"
11
*/
12
public class User implements Serializable {
13![](/Images/OutliningIndicators/InBlock.gif)
14
/**
15
* @hibernate.id generator-class="uuid.hex"
16
* length="32"
17
* column="user_id"
18
*/
19
private String id;
20![](/Images/OutliningIndicators/InBlock.gif)
21
/**
22
* @hibernate.property column="user_name"
23
* length="80"
24
*/
25
private String name;
26![](/Images/OutliningIndicators/InBlock.gif)
27
/**
28
* @hibernate.property
29
*/
30
private char sex;
31![](/Images/OutliningIndicators/InBlock.gif)
32
/**
33
* @hibernate.property
34
*/
35
private int age;
36![](/Images/OutliningIndicators/InBlock.gif)
37
//省略了getter & setter
38
private UserManager manager = null;
39![](/Images/OutliningIndicators/InBlock.gif)
40
/**
41
* @return Returns the manager.
42
*/
43
public UserManager getManager() {
44
return manager;
45
}
46![](/Images/OutliningIndicators/InBlock.gif)
47
/**
48
* @param manager The manager to set.
49
*/
50
public void setManager(UserManager manager) {
51
this.manager = manager;
52
}
53![](/Images/OutliningIndicators/InBlock.gif)
54
/**
55
* @param user
56
*/
57
public void add(User user) {
58
this.getManager().add(user);
59
}
60![](/Images/OutliningIndicators/InBlock.gif)
61
public List loadByName(String name) {
62
return this.getManager().loadByName(name);
63
}
64![](/Images/OutliningIndicators/InBlock.gif)
65
public void remove(User user) {
66
this.getManager().remove(user);
67
}
68
}
69![](/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/None.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
12
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](/Images/OutliningIndicators/InBlock.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/ExpandedBlockEnd.gif)
69
![](/Images/OutliningIndicators/None.gif)
测试代码,我们可以这样来写
1
ApplicationContext context = JUnitTestHelper.getContext();
2
User user = (User) context.getBean("user");
3![](/Images/OutliningIndicators/None.gif)
4
User _u1 = new User();
5
_u1.setName("martin xus");
6
_u1.setSex('F');
7
_u1.setAge(100);
8![](/Images/OutliningIndicators/None.gif)
9
user.add(_u1);
10![](/Images/OutliningIndicators/None.gif)
11
Assert.assertEquals(((User) user.loadByName("martin xus").get(0)).getId(), _u1.getId());
12![](/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/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
相关推荐
对象模型(Object Model)在DDD中占据重要地位,通过实体(Entities)、值对象(Value Objects)和领域服务(Domain Services)构建。实体是拥有唯一标识且生命周期贯穿的应用对象,而值对象则是描述实体属性的不可...
8. 领域对象的生命周期(Lifecycle of a Domain Object):阐述了领域对象在软件中的生命周期管理。 9. 聚合(Aggregates):一组相关对象的集合,用于维护数据的完整性和一致性。 10. 工厂(Factories)、仓库...
最后,思考具体算法意味着需要深入研究各种可能的迁移学习策略。这些可能包括浅层迁移,如特征选择和重新加权;深度迁移,如预训练模型的微调;或者更多先进的方法,如对抗性训练、多任务学习和元学习。每种方法都有...
4. 抽象与具体相结合:通过通用语言(Ubiquitous Language)让领域专家和开发人员共享相同的思考方式,同时保持代码的可读性和可维护性。 在“dddquickly-chinese-2014version.pdf”这本书中,Evans会进一步解释...
因此我们要以一种新的思维方式来重新思考Web开发,Rails、Django和TurboGears这样的动态框架给我们铺平了道路。Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,...
- **里程碑之二**:随着领域事件(Domain Event)、命令查询职责分离(CQRS)、事件溯源(Event Sourcing)等技术的引入和发展,领域驱动设计的建模方式经历了从以“对象”为中心到以“事件”为中心再到以“函数”为中心的...
以上内容详细介绍了JavaScript针对Cookie的基本操作方法,包括设置、获取和删除Cookie的具体实现细节,以及一些扩展功能的思考。通过这些技巧,开发者可以更好地管理和利用Cookie,以提高Web应用程序的功能性和用户...
- 分析恶意DNS流量和域名生成算法(Domain Generation Algorithms, DGA)。 20. 数据分析与可视化:谁是安全圈的吃鸡第一人 - 展示如何通过数据分析和可视化技术来提升安全分析能力。 21. 虎鲸杯电子取证大赛...