实验七Hibernate开发.docx
- 文档编号:7185913
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:16
- 大小:80.62KB
实验七Hibernate开发.docx
《实验七Hibernate开发.docx》由会员分享,可在线阅读,更多相关《实验七Hibernate开发.docx(16页珍藏版)》请在冰豆网上搜索。
实验七Hibernate开发
实验七Hibernate开发
【实验目的】:
1.理解ORM的思想概念,Hibernatede框架结构。
2.理解Hiibernate的工作原理。
3.掌握Hibernate应用程序开发的步骤
4.掌握Hibernate配置文件的编写和应用。
5.理解Hibernate的关联关系映射。
【实验内容】:
开发一个简单的Hibernate应用程序,理解Hibernate应用程序的结构,掌握Hibernate应用程序的开发步骤。
【实验步骤】:
(一)设置MySQL的编码相关属性,以支持中文数据。
步骤如下:
1、右键点击“我的电脑”,在弹出的菜单中选择“管理”,弹出如下窗口:
2、选择“服务和程序”,在弹出的窗口中选择“服务”,
3、选择服务条目“MySQL”,将其禁用。
4、打开MySQL安装目录下的“MySQLServer5.1”文件夹,选择my.ini文件,
在“CLIENTSECTION”部分,将default-character-set=latin1改成default-character-set=gbk;在“SERVERSECTION”部分,将default-character-set=latin1改成default-character-set=gbk。
5、重新启动MySQL服务。
(二)homeNewsHibernate应用程序的开发。
1.创建数据
进入MySQL的命令行窗口,root用户的登录密码是mysql。
(1)使用createdatabasenews_wire命令,建立数据库
(2)使用usenews_wire命令,选定数据库为news_wire
(3)使用createtablehomeNews(idintnotnullauto_increment,titlevarchar(50),typevarchar(50),contentvarchar(500),theTimevarchar(50),primarykey(id))建立数据表
(4)使用insert命令插入记录。
insertintohomeNews(title,type,content,theTime)values(‘明日省人才有招聘会’,‘经济生活’,‘明日,众多招聘企事业单位将在体育馆参展,招聘应届毕业生’,‘2011-10-10’),可如此插入多条记录。
2.在MyEclipse的workspace中新建Java应用程序NewsDisplay。
其目录结构如下图所示。
将MySQL数据库的驱动程序,Hibernate解压缩路径下的hibernate3.jar,required目录下的所有文件,jpa目录下的所有文件添加到用户库hibernate中;并将添加到该工程的类加载路径中。
方法是:
选中工程,单击右键选择“BuildPath”->“ConfigureBuildPath”,在弹出的窗口中,选择“Libraries”,选择右边的“AddJars”,加入上述文件。
3.编写持久化类HomeNews.java,放在新建的com.domain包中。
packagecom.domain;
publicclassHomeNews{
privateLongid;
privateStringtitle;
privateStringtype;
privateStringcontent;
privateStringtheTime;
publicHomeNews(){}
publicLonggetId()
{
returnid;
}
publicvoidsetId(Longid){
this.id=id;
}
publicStringgetTitle()
{
returntitle;
}
publicvoidsetTitle(Stringtitle){
this.title=title;
}
publicStringgetType()
{
returntype;
}
publicvoidsetType(Stringtype){
this.type=type;
}
publicStringgetContent()
{
returncontent;
}
publicvoidsetContent(Stringcontent){
this.content=content;
}
publicStringgetTheTime()
{
returntheTime;
}
publicvoidsetTheTime(StringtheTime){
this.theTime=theTime;
}
}
4.编写持久化类HomeNews对应的映射文件HomeNews.hbm.xml,将持久化类和数据表homeNews映射起来。
xmlversion="1.0"encoding="GBK"?
>
--指定Hibernate映射文件的DTD信息-->
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
--hibernate-mapping是连接配置的根元素-->
5.编写Hibernate应用程序的配置文件hibernate.cfg.xml。
xmlversion="1.0"encoding="GBK"?
>
--指定Hibernate配置文件的DTD信息-->
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"
--注意,必须是一个可以下载的地址-->
--hibernate-configuration是连接配置的根元素-->
com.mysql.jdbc.Driver
jdbc:
mysql:
//localhost:
3306/news_wire
org.hibernate.dialect.MySQLInnoDBDialect
6.编写业务类BussinessService,放在新建的com.service包中。
packagecom.service;
importcom.domain.*;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
importorg.hibernate.Query;
importjava.util.List;
publicclassBusinessService{
publicstaticSessionFactorysessionFactory;
static{
try{
//根据默认位置的hibernate配置文件的配置信息,创建configuration实例
Configurationconfig=newConfiguration();
config.congfigure();
config.addClass(HomeNews.class);
sessionFactory=config.buildSessionFactory();
}cathch(Exceptione){
e.printStackTrace();
}
}
//该方法用于查询所有的新闻信息
publicvoidfindAllNews(){
Sessionsession=sessionFactory.openSession();
Transactiontx=null;
try{
tx=session.beginTransaction();
Queryquery=session.createQuery("fromHomeNewsash");
Listlist=query.list();
System.out.println("ID"+"新闻标题"+"新闻类别"+"新闻内容"+"发布时间");
for(inti=0;i HomeNewsh=(HomeNews)list.get(i); System.out.print(h.getId()); System.out.print(h.getTitle()); System.out.print(h.getType()); System.out.print(h.getContent()); System.out.print(h.getTheTime()); System.out.println(); } mit(); }catch(Exceptione){ e.printStackTrace(); }finally{ session.close(); } } publicstaticvoidmain(String[]args){ BusinessServiceb=newBusinessService(); b.findAllNews(); } } 7.运行工程。 选择RunAs->JavaApplication->BusinessService。 观察运行结果。 (三)开发客户订单管理程序,该程序的功能有: 级联保存客户信息及其所发出的订单,检索所有客户及其关联的订单。 1.建立数据库,在Mysql中建立myshop数据库,当中有两个数据表customers(客户表)和orders(订单表)。 客户表和订单标的关联关系为一对多。 并在表中加入若干条记录。 createdatabasemyshop; usemyshop; createtablecustomers(idbigint(8)auto_increment,namevarchar(50),addressvarchar(50),primarykey(id)); createtableorders(idbigint(8)auto_increment,orderNumbervarchar(30),customerIdbigint(8),indexcus_ind(customerId),primarykey(id),foreignkey(customerId)referencescustomers(id)onupdatecascade) 2.建立Java应用程序CustomerOrderManager。 其文件结构如下所示。 并将支持Hibernate程序开发的类库文件加入到类加载路径下,同本次试验中的上个程序。 4.新建com.domain包,里面有4个文件,分别是Customer.java,代表客户信息的持久化类;Customer.hbm.xml,Customer类的映射文件;Order.java代表订单信息的持久化类;Order.hbm.xml,Order类的映射文件。 其代码分别如下: Customer.java的源代码 packagecom.domain; importjava.io.Serializable; importjava.util.HashSet; importjava.util.Set; publicclassCustomerimplementsSerializable{ privateLongid; privateStringname; privateStringaddress; privateSetorders=newHashSet(); publicCustomer(){ } publicCustomer(Stringname,Stringaddress,Setorders){ this.name=name; this.address=address; this.orders=orders; } publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetAddress(){ returnaddress; } publicvoidsetAddress(Stringaddress){ this.address=address; } publicSetgetOrders(){ returnorders; } publicvoidsetOrders(Setorders){ this.orders=orders; } } Customer.hbm.xml的源代码 xmlversion="1.0"encoding="GBK"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.3//EN" " lazy="true"> Order.java源代码 packagecom.domain; importjava.io.Serializable; publicclassOrderimplementsSerializable{ privateLongid; privateStringorderNumber; privateCustomercustomer; publicOrder(){} publicOrder(StringorderNumber){ this.orderNumber=orderNumber; } publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetOrderNumber(){ returnorderNumber; } publicvoidsetOrderNumber(StringorderNumber){ this.orderNumber=orderNumber; } publicCustomergetCustomer(){ returncustomer; } publicvoidsetCustomer(Customercustomer){ this.customer=customer; } } Order.hbm.xml的源代码 xmlversion="1.0"encoding="GBK"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN" " class="com.domain.Customer"not-null="true"/> 4.编写配置文件hibernate.cfg.xml。 xmlversion="1.0"encoding="UTF-8"? > --指定Hibernate配置文件的DTD信息--> DOCTYPEhibernate-configurationPUBLIC "-//Hibernate/HibernateConfigurationDTD3.0//EN" " --hibernate-configuration是连接配置的根元素--> com.mysql.jdbc.Driver jdbc: mysql: //localhost: 3306/myshop org.hibernate.dialect.MySQLInnoDBDialect 5.业务类BusinessService.java packagecom.service; importjava.util.HashSet; importjava.util.Iterator; importjava.util.List; importjava.util.Set; importor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验七 Hibernate开发 实验 Hibernate 开发