Hibernate学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来
在MyEclipse中建连接数据库的连接名为MySQL_localhost,在Driver JARS中导入MySQL的驱动程序mysql-connector-java-5.1.6-bin.jar
一.新建名为MySQLHibernate的Web Project
File—new—project—MyEclipse—Java Enterprice Projects—Web Project(Optional Maven Support)
在Project Name中输入MySQLHibernate---点击Finsh完成
1
xmlversion='1.0'encoding='UTF-8'?>2
DOCTYPEhibernate-configurationPUBLIC3
"-//Hibernate/HibernateConfigurationDTD3.0//EN"4
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">5
6
7
<hibernate-configuration>8
9
<session-factory>10
11
<propertyname="connection.username">rootproperty>12
13
14
<propertyname="connection.url">15
jdbc:mysql://localhost:3306/STMS?useUnicode=true&characterEncoding=GBK16
property>17
18
19
<propertyname="dialect">20
org.hibernate.dialect.MySQLDialect21
property>22
23
24
<propertyname="myeclipse.connection.profile">25
MySql_localhost26
property>27
28
29
<propertyname="connection.password">rootproperty>30
31
32
<propertyname="connection.driver_class">33
com.mysql.jdbc.Driver34
property>35
36
37
<propertyname="show_sql">trueproperty>38
39
40
<mappingresource="org/lxh/hibernate/demo01/Person.hbm.xml"/>41
42
session-factory>43
44
hibernate-configuration>
二:给项目加入Hibernate支持
选中刚刚新建的项目—MyEcplipse—Project Capabilites—Add Hibernate Capabilites
Next—Next—选择连接数据库的连接名—Next--
点击Finash完成
三:建立Person表的POJO类
1
packageorg.lxh.hibernate.demo01;2
3
/**4
*@author∪∩BUGE-mail:tidelgl@163.com5
*@versionAug30,20088:05:41AM6
*@person表的POJO类,类名与表名相同7
*/8
publicclassPerson{9
10
//以下的属性与Person表中的字段名相同11
privateStringid;12
privateStringname;13
privateStringpassword;14
privateStringsex;15
privateStringemail;16
17
publicStringgetId(){18
returnid;19
}20
21
publicvoidsetId(Stringid){22
this.id=id;23
}24
25
publicStringgetName(){26
returnname;27
}28
29
publicvoidsetName(Stringname){30
this.name=name;31
}32
33
publicStringgetPassword(){34
returnpassword;35
}36
37
publicvoidsetPassword(Stringpassword){38
this.password=password;39
}40
41
publicStringgetSex(){42
returnsex;43
}44
45
publicvoidsetSex(Stringsex){46
this.sex=sex;47
}48
49
publicStringgetEmail(){50
returnemail;51
}52
53
publicvoidsetEmail(Stringemail){54
this.email=email;55
}56
57
}58
四:通过Hibernate反向工程建立person表与Person类的映射
首先调出DB Browser视图(Windows—view show—other—MyEclipse datebase—DB Browser)—展开MySQL_localhost至表person—右键表person—Hibernate Reverse Engineering
Finash完成
1xmlversion="1.0"encoding="utf-8"?>2
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"3
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">4
7
<hibernate-mapping>8
13
<classname="Dao.Student"table="student"catalog="stms">14
<idname="sno"type="java.lang.String">15
<columnname="Sno"length="20"/>16
17
<generatorclass="increment"/>18
id>19
<propertyname="sname"type="java.lang.String">20
<columnname="Sname"length="20"not-null="true"/>21
property>22
<propertyname="password"type="java.lang.String">23
<columnname="Password"length="20"/>24
property>25
class>26
hibernate-mapping>27
五:建立具体操作Hibernate的类src/org.lxh.hibernate.demo01.PersonOperate.java
1packageorg.lxh.hibernate.demo01;2
3
importjava.util.Iterator;4
importjava.util.List;5
6
importorg.hibernate.Query;7
importorg.hibernate.Session;8
importorg.hibernate.SessionFactory;9
importorg.hibernate.Transaction;10
importorg.hibernate.cfg.Configuration;11
12
/**13
*@author∪∩BUGE-mail:tidelgl@163.com14
*@versionAug30,20088:27:53AM15
*@具体操作Hibernate的类16
*@功能:增加,删除,个性,按ID查询,模糊查询,查询全部操作17
*@注意导入的包:从org.hibernate.*;18
*/19
publicclassPersonOperate{20
//在Hibernate中所有的操作都是通过Session来完成21
privateSessionsession=null;22
23
//Session是一个接口,必须实例化24
//在构造方法中实例实化Session对象25
publicPersonOperate(){26
//找到Hibernate配置文件27
Configurationconfig=newConfiguration().configure();28
29
//从全局配置文件中取出SessionFactory30
SessionFactoryfactory=config.buildSessionFactory();31
32
//从SessionFactory中取出一个Session33
this.session=factory.openSession();34
35
}36
37
//所有的操作都是通过Session进行38
//(1)实现向数据库中插入数据39
publicvoidinsert(Personp){40
//1.开始事务41
Transactiontran=this.session.beginTransaction();42
43
//2.执行语句44
this.session.save(p);45
46
//提交事务47
tran.commit();48
}49
50
//(2)实现修改数据库的数据51
publicvoidupdate(Personp){52
//1.开始事务53
Transactiontran=this.session.beginTransaction();54
55
//2.执行语句56
this.session.update(p);57
58
//提交事务59
tran.commit();60
61
}62
63
//(3)实现查询数据库的数据64
//使用HQL按ID查询65
publicPersonqueryById(Stringid){66
Personp=null;67
68
//使用Hibernate查询语句(HQL)69
Stringhql="FromPersonaspwherep.id=?";//从Person类中对象p的id查70
71
//通过Query接口查询72
Queryq=this.session.createQuery(hql);73
q.setString(0,id);//下标从0开始(id是第一个属性)74
Listl=q.list();//导入的包是java.util.List;75
Iteratoriter=l.iterator();76
if(iter.hasNext()){77
p=(Person)iter.next();78
}79
returnp;80
}81
82
//(4)实现删除数据库的数据83
publicvoiddelete(Personp){84
//1.开始事务85
Transactiontran=this.session.beginTransaction();86
87
//2.执行语句88
this.session.delete(p);89
90
//提交事务91
tran.commit();92
93
}94
95
//通过HQL语句实现删除数据库的数据(推荐)96
publicvoiddelete(Stringid){97
Stringhql="deletePersonwhereid=?";98
Queryq=this.session.createQuery(hql);99
//设置参数100
q.setString(0,id);101
//执行更新语句102
q.executeUpdate();103
//提交事务处理104
this.session.beginTransaction().commit();105
106
}107
108
//通过HQL查询全部数据109
publicListqueryAll(){110
Listl=null;111
Stringhql="FromPersonasp";112
Queryq=this.session.createQuery(hql);113
l=q.list();114
returnl;115
}116
117
//通过HQL查询全部数据118
publicListqueryByLike(Stringcond){119
Listl=null;120
//条件121
Stringhql="FromPersonaspwherep.namelike?";122
Queryq=this.session.createQuery(hql);123
//设置参数124
q.setString(0,"%"+cond+"%");125
l=q.list();126
returnl;127
}128
129
}130
六:建立测试类src/org.lxh.hibernate.demo01.TestPO.java
1packageorg.lxh.hibernate.demo01;2
3
importjava.util.Iterator;4
importjava.util.List;5
6
/**7
*@author∪∩BUGE-mail:tidelgl@163.com8
*@versionAug29,20089:53:52PM9
*@POJO类的测试类10
*/11
publicclassTestPO{12
13
/**14
*@paramargs15
*/16
publicstaticvoidmain(String[]args){17
18
//生成POJO类实例化对象19
Personp=newPerson();20
21
//p.setId("Hibernate");22
//p.setId("MySQL");23
//p.setName("学习笔记");24
p.setName("使用用Hibernate");25
p.setPassword("123");26
p.setEmail("tidelgl@163.com");27
p.setSex("男");28
29
//实例化PersonOperate对象30
PersonOperatepo=newPersonOperate();31
32
//1.插入数据33
//po.insert(p);34
35
//2.修改数据36
//po.update(p);37
38
//3.查询数据39
//Personp=po.queryById("Hibernate");40
//System.out.println(p.getName());41
42
//通过HQL查询全部数据43
//Listl=po.queryAll();44
//通过HQL模糊查询45
//Listl=po.queryByLike("用");46
//Iteratoriter=l.listIterator();47
//while(iter.hasNext()){48
//Personp=(Person)iter.next();49
//System.out.println(p.getName());50
//51
//}52
53
//4.删除数据54
//po.delete(p);//通过查询结果删除55
//po.delete("Hibernate");//通过HQL语句删除56
57
58
}59
60
}61
例子结构: