value="classpath:
hibernate.cfg.xml">
在这里,我们发现设置了一个id为sessionFactory类型的一个对象,他的类型是org.springframework.orm.hibernate3.LocalSessionFactoryBean,当中还有属性configLocation,value="classpath:
hibernate.cfg.xml,这些配置信息呢。
实际上可以这样理解:
设定了一个id为sessionFactory类型的对象,它的类型是:
org.springframework.orm.hibernate3.LocalSessionFactoryBean的,通过这个对象就能获取hibernate的session对象,进行完成对数据的添加、删除、修改的操作。
也就是说这个对象是spring帮我们提供的一个支持.
第五步:
增加了hibernate,spring的支持后,我们就可以开发持久层的这些类和接口了。
首先,我们的项目要用到了guestbook、admin两个表,所以要使用oracle来创建这两个表,表的创建的sql提供给大家,如下所示:
createtableADMIN
(
IDNUMBERnotnull,
USERNAMEVARCHAR2(20),
PASSWORDVARCHAR2(20)
)
;
altertableADMIN
addconstraintADMIN_PKprimarykey(ID);
createtableGUESTBOOK
(
IDNUMBERnotnull,
NAMEVARCHAR2(40),
EMAILVARCHAR2(60),
URLVARCHAR2(60),
TITLEVARCHAR2(200),
CONTENTVARCHAR2(2000),
TIMEVARCHAR2(40)
)
;
altertableGUESTBOOK
addconstraintGBOOK_PKprimarykey(ID);
insertintoADMIN(ID,USERNAME,PASSWORD)
values(1,'liuwei','123456');
commit;
insertintoGUESTBOOK(ID,NAME,EMAIL,URL,TITLE,CONTENT,TIME)
values(100026,'刘伟','liuwei8809@','','欢迎大家观看我的视频','感谢大家对我们的支持,请持续关注我们的网站。
更多内容,更多视频,尽在。
','2007-16-1402:
12:
51');
insertintoGUESTBOOK(ID,NAME,EMAIL,URL,TITLE,CONTENT,TIME)
values(1000072,'开发工具与软件',null,'','我们爱大家','开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。
','2007-42-2001:
12:
17');
insertintoGUESTBOOK(ID,NAME,EMAIL,URL,TITLE,CONTENT,TIME)
values(1000074,'开发工具与软件','liuwei@','','我们爱大家','开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。
','2007-50-2002:
12:
52');
commit;
而且还应该在oracle10g中创建名为gb_seq的序列,sql语句为:
--Altersequence
altersequencegb_seq
nominvalue
nomaxvalue
nocache;
--Modifythelastnumber
altersequencegb_seqincrementby-20nocache;
selectgb_seq.nextvalfromdual;
altersequencegb_seqincrementby1nocache;
declare
LastValueinteger;
begin
loop
selectgb_seq.currvalintoLastValuefromdual;
exitwhenLastValue>=100000-1;
selectgb_seq.nextvalintoLastValuefromdual;
endloop;
end;
/
altersequencegb_seqincrementby1nocache;
(备注:
在创建数据库的表时,我是使用了PLSQLDeveloper工具来创建的,这样更方便快捷些,要使用这个工具,请自行下载。
)
好了,接着做下去。
首先,我们打开myeclipsedatabaseexplorer视图,在这里,我们进行逆向工程的操作,如图:
这样就打开了逆向工程的操作的界面了。
接着,我们会看到如下的操作界面,如图:
使用如上图的设置,com.v512.guestbook.model存放的是映射文件和相应的实体类(POJO),再点击”next”.
这时,会出现操作界面,如下图:
在这一步,他设置了主键的生成方式,我使用了natice,其它不用改变。
最后点击”finish”.
再查看目录结构,会显示如下的目录结构,如图:
里面针对两个表生成了相应的.hbm.xml的映射文件和相应的两个类。
查看hibernate.cfg.xml,其源码如下:
xmlversion='1.0'encoding='UTF-8'?
>
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"
--GeneratedbyMyEclipseHibernateTools.-->
scott
jdbc:
oracle:
thin:
@localhost:
1521:
ora10g
org.hibernate.dialect.Oracle9Dialect
Linkoracle10g
tiger
oracle.jdbc.driver.OracleDriver
执行上面的操作后,接着往下做。
呵呵。
第六步,我们为项目新建一个包,包名称为:
com.v512.guestbook.dao,它用来存放对底层数据库进行的操作的一系列接口。
接着在包中新建一个接口,名为:
GuestbookDao,如图:
在接口中,我们定义了几个方法,如下:
packagecom.v512.guestbook.dao;
importjava.util.*;
importcom.v512.guestbook.model.Guestbook;
//DAO指的是能对底层数据训进行怎样的操作,通常是增删改查的操作
publicinterfaceGuestbookDao{
publicvoidsave(Guestbookg);
publicvoiddelete(Longid);
publicListgetGuestbooks();
publicGuestbookgetGuestbook(Longid);
}
紧接着我们创建一个包,包名为:
com.v512.guestbook.dao.hibernate,这个包存放的是实现了上面定义的dao接口的类,而这些类当中都是通过使用Hibernate的技术来执行相应的操作的。
在该包中,我创建了一个类,类的名称为:
GuestbookDaoHibernate,它要实现上面定义的GuestbookDao接口,并且继承于HibernateDaoSupport.类的完整的源码是:
packagecom.v512.guestbook.dao.hibernate;
//这个包存放的实现了dao接口的一些类,而这些类都是通过Hibernate的技术来执行相应的操作
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.v512.guestbook.dao.GuestbookDao;
importcom.v512.guestbook.model.Guestbook;
publicclassGuestbookDaoHibernateextendsHibernateDaoSupportimplementsGuestbookDao{
publicvoiddelete(Longid){
this.getHibernateTemplate().delete(getGuestbook(id));
}
publicGuestbookgetGuestbook(Longid){
return(Guestbook)getHibernateTemplate().get(com.v512.guestbook.model.Guestbook.class,id);
}
publicListgetGuestbooks(){
returngetHibernateTemplate().find("fromGuestbookorderbyiddesc");
}
publicvoidsave(Guestbookg){
getHibernateTemplate().saveOrUpdate(g);
}
}
在上面操作完成后,我们开始编写服务层的接口和相应的接口实现类(可以理解为spring层)。
我们新建一个包,包的名称为com.v512.guestbook.service,接着我们在该包中定义了一个接口。
完整的源如下:
packagecom.v512.guestbook.service;
importjava.util.List;
importcom.v512.guestbook.model.Guestbook;
publicinterfaceGuestbookManager{
publicvoidsave(Guestbookg);
publicvoiddelete(Stringid);
publicGuestbookgetGuestbook(Stringid);
publicListgetGuestbooks();
}
到了这里,我们新建一个包,包名称为:
com.v512.guestbook.service.impl,在包中,我定义了上面GuestbookManager的实现类,完整的源码如下:
packagecom.v512.guestbook.service.impl;
importjava.util.List;
importcom.v512.guestbook.dao.GuestbookDao;
importcom.v512.guestbook.model.Guestbook;
importcom.v512.guestbook.service.GuestbookManager;
publicclassGuestbookManagerImplimplementsGuestbookManager{
privateGuestbookDaodao;
publicvoidsetGuestbookDao(GuestbookDaodao){
this.dao=dao;
}
publicvoiddelete(Stringid){
dao.delete(newLong(id));
}
publicGuestbookgetGuestbook(Stringid){
returndao.getGuestbook(newLong(id));
}
publicListgetGuestbooks(){
returndao.getGuestbooks();
}
publicvoidsave(Guestbookg){
dao.save(g);
}
}
执行类似的操作,我们在com.v512.guestbook.dao中定义AdminDao的接口,代码如下:
packagecom.v512.guestbook.dao;
publicinterfaceAdminDao{
publicbooleanvalidate(Stringusername,Stringpassword);
}
再创建AdminDao的实现类,类名称为AdminDaoHibernate,把它放置在com.v512.guestbook.dao.hibernate包中,完整的源码是:
packagecom.v512.guestbook.dao.hibernate;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.v512.guestbook.dao.AdminDao;
publicclassAdminDaoHibernateextendsHibernateDaoSupportimplementsAdminDao{
publicbooleanvalidate(Stringusername,Stringpassword){
Stringparam[]={username,password};
Listlist=getHibernateTemplate().find("fromAdminwhereusername=?
andpassword=?
",param);
returnlist.size()>0;
}
}
在上面操作完成后,我们开始编写服务层的接口和相应的接口实现类(可以理解为spring层)。
我们新建一个包,包的名称为com.v512.guestbook.service,接着我们在该包中定义了一个接口。
完整的源如下:
packagecom.v512.guestbook.service;
publicinterfaceAdminManager{
publicbooleanvalidate(Stringusername,Stringpassword);
}
到了这里,我们新建一个包,包名称为:
com.v512.guestbook.service.impl,在包中,我定义了上面AdminManager的实现类,完整的源码如下:
packagecom.v512.guestbook.service.impl;
importcom.v512.guestbook.dao.AdminDao;
importcom.v512.guestbook.service.AdminManager;
publicclassAdminManagerImplimplementsAdminManager{
privateAdminDaodao;
publicvoidsetAdminDao(AdminDaodao){
this.dao=dao;
}
publicbooleanvalidate(Stringusername,Stringpassword){
returndao.validate(username,password);
}
}
紧接着,我们在
执行完上面的操作后,我们去修改项目当中的配置文件。
在applicationContext.xml中,我想把Hibernate的配置信息也设置到applicationContext.xml文件中去,这样的话,hibernate.cfg.xml文件就不需要了.
首先,我在当中创建一个dataSource的bean,如图:
接着会弹出这样一个操作界面,如图:
设置后,applicationContext.xml中便新增了名为dataSourece的bean。
如图:
在增加了DataSourcebean的设置后,再增加两个bean的设置,右键,在“Spring”---"NewBean",我们添加了guestbookDao和guestbookManager两个bean,如图,
在上图中,要注意三点:
1)Beanid指的是bean的id;
2)Beanclass:
选择
的”Browse”按钮,选择GuestbookDaoHibernate