IT虾米网

持久化框架——编程模型详解

admin 2018年05月31日 架构师 150 0

就需要开发的组件和每个组件所使用的语言而言,编程模型是什么样的?

相对于框架和应用组件而言,持久对象的“生命周期”是什么样的?

1.     初始化

在服务实现的内部,需要进行什么样的初始化才能够访问框架的API?

给出在查询id=100的客户(Customer)之前,需要用来初始化框架的代码。

说明如何使用Derby JDBC驱动程序来设置框架,以及如何使用JNDI名称jdbc/Derby/DataSource的应用程序的数据源(DataSource)。

2.     链接

支持什么样的链接模型?

给出一个显示地创建连接的例子,在例子中使用与初始化部分相同的查询(如果支持这样做,并且在初始化部分中还没有给出过该查询的话)。

说明如何将数据库连接池的大小设置为20。

3.     事务

框架支持什么样的事务控制?

给出一个这样的例子,即把两个更新语句作为一组放到用户定义的单个事务中,如果可能的话,请使用如下的更新。

(1)  更新id=100的企业客户(business customer)信息,设置businessPartnet=false。

(2)  更新客户的未结订单(openOrder ),设置status=`SUBMITTED' 。

废除一个这样的例子,即配置框架以便能够使用应用程序服务器的全局事务(例如JTA)。

支持什么隔离级别?

给出每种支持的隔离级别所需的代码。

4.     创建

描述在框架内部创建对象的一般方法。

给出创建一个新的租住客户(ResidentialCustomer)的代码。

给出创建一个客户(Customer)拥有的新订单(Order)的代码。

5.     检索

描述在框架内部进行查询和对象检索的一般方法。

特别需要明确的是,是否支持动态查询?

给出检索匹配给定主键的单个客户(Customer)的代码。

给出检索所有“活跃”的客户(Customer)(具体而言,指所有具有未结订单(OPEN_ORDER)的客户(Customer))的代码。

6.     更新

描述在框架内部更新对象的一般方法。

给出更改单项(LineItem)的数量(quantity)的代码,具体来说,就是使用给定的客户ID(customerId)来把单项产品(LineItem)的数量的值更新为100.

给出把未结订单(OpenOrder)属性更改为Null的代码。

7.     删除

描述在框架内部删除对象的一般方法。

特别需要明确的是,是否支持级联删除?

给出删除单项(LineItem)的代码。

给出删除订单(Order)和所有相关联的单项(LineItem)(如果支持级联删除的话就通过级联删除)的代码。

8.     存储过程

描述在框架内部调用存储过程的一般方法。

给出弟阿勇一下的“交换排序”的java存储过程的代码。

SwapPojo orderlds=new SwapPojo();

orderlds .setFjrst (orderldl);

orderlds .setSecond (orderld2);

dm.update(”swap .order”,orderlds);

9.     批处理

描述在框架内部支持批处理的一般方法。

批模式支持什么样的更新操作?

为每种支持的操作给出一个例子。

10.框架拓展

使用简短的接口/API例子描述所有可能的拓展点或插入点。

如果框架支持插入分布式的缓存框架的话,那么可以推迟到分布式缓存部分再给出例子。

11.  错误处理

描述处理框架中的异常的一般方法。如果可能的话,考虑加入一个UML类图或者用你喜欢的符号描述的类图来说明其层次体系。


发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

StringBuffer和StringBuilder的区别详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。