混合Eclipse、WTP、Struts和Hibernate - 编程入门网
etFirstName()而不是预读全部客户数据时,才会从数据库读取数据。当读取大量数据,或希望推迟进行开销昂贵的数据库操作时,这样做或许会带来好处。在我们的例子中,我们只读取少量客户信息,不会在以后进行其他操作或数据库访问。例如,如果在数据库会话关闭后,我们仍然试图调用lazy方法,Hibernate就会抛出异常。
配置完Hibernate之后,我们必须对CommandExecutor类稍作修改以使用该框架,并删除硬编码的SQL代码。该类被作为单元素,用于存储数据源并获得数据库连接。首先,我们添加实例变量以存储Hibernate会话工厂。Hibernate会话工厂类似于数据源,不同的是,我们从Hibernate会话工厂获得的不是数据库连接,而是Hibernate数据库会话。实例变量看上去类似于:
接下来,为实例变量创建一个访问方法,请参见清单9。这样做可以保存封装的对象状态,同时允许使用延迟初始化技术(只在需要时访问数据)。 清单9:新的会话工厂访问方法
在该方法中,我们首次初始化一个会话工厂。Hibernate的Configuration对象被用于从类路径读取配置文件,从而初始化框架。 在开始使用Hibernate进行数据库操作之前,我们已经使用了executeDatabaseCommand()方法:使用需要executeDatabaseOperation()方法的DatabaseCommand接口。由于现在希望使用Hibernate,我们将分别介绍使用DatabaseCommand接口和CommandExecutor单元素对象的其他方法。这种方法通过Hibernate框架执行所有的数据库操作(请参见清单10)。 清单10:执行Hibernate命令
看上去,它和executeDatabaseCommand()方法非常相似,不同之处在于我们使用的是Hibernate会话对象,而不是普通的JDBC连接。接下来,将下述存根方法添加到DatabaseCommand接口: public Object executeHibernateOperation(Session session) throws SQLException; 在向接口添加新方法后,Eclipse工作台中所有实现该接口的类均被标上红色标记,因为这些实现该接口的类还必须实现它所需的所有方法。我们有四种实现数据库命令接口的类。 public class CreateCustomer implements DatabaseCommand public class CreateOrder implements DatabaseCommand public class ListCustomers implements DatabaseCommand public class ListCustomerOrders implements DatabaseCommand 混合Eclipse、WTP、Struts和Hibernate(7)时间:2010-12-31 bea Boris Minkin因此,我们必须向这四种类中分别添加executeHibernateOperation()实现方法。首先我们来看看CreateCustomer类。该类的executeDatabaseOperation()方法如清单11所示。 清单11:CreateCustomer类的executeDatabaseOperation()方法
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |