领域模型

来源:互联网 发布:怎么入侵网站数据库 编辑:程序博客网 时间:2024/05/13 19:52

1  实现领域模型

       领域模型经常被其它功能引用,因此,我们应该时刻注意不应该让切面逻辑侵入到领域模型的实现中去。

2      当我们的关注点,例如持久化,事物管理,权限等出现在领域模型的实现中时,这就是代码侵入(leaky concerns)。领域模型的实现不应该依赖于java api。例如领域模型中不应该用JDBC api调用数据库操作。所以实现领域模型的规则:MVC三层中都能访问领域模型实体类,并能改变其状态。

      防止领域模型代码侵入可以方便单元测试,因为可以不必为其配置特定的上下文环境或者容器。


3   javaee 用元数据解决了leaky concerns,用注解或者XML配置文件,hibernate不是javaee运行时环境,他只是用来实现JPA中数据持久化的功能。JPA主要定义实体类,实现变成通明持久化。hibernate实现了自动持久化。这里的通明是指把领域模型的持久化类和持久化层的关注点(concerns)完全分离,也就是说持久化类不关注也不依赖于持久化机制。我们用自动指的是一个持久化的解决方案(注解持久化类,层次,元数据)依赖于你去处理底层操作细节(比如用JDBC API连接数据库)


注:没有一个自动的持久化解决方案是完全通明的。我们应该让持久化机制对领域模型类的实现影响最小。


4       一:JPA不要求持久化类必须继承某个特定父类或者继承某个接口。

         二:你能在持久化上下文之外复用持久化类,比如在显示层访问持久化类或者单元测试。有可重用性和可测试性。

        三: 持久化类不关注底层持久化技术,甚至不知道自己被持久化。

        四:  在单线程业务逻辑中不一定要关注持久化类实例的状态


5  我们最长用的编程模型来实现通明和自动持久化的是POJO (Plain Old Java Objects),


6 当持久化实例被存储在 HttpSession中或者通过 RMI传送时,必须要序列化。


7 可持久化类必须是顶层类(可以继承一个不是持久化的父类,不可以是内部类),JPA和hibernate要求持久化类必须有一个无参数构造函数






          

0 0
原创粉丝点击