Hibernate学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来
准备:建表
用MySQL在名为STMS数据库中建表person
在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-configurationPUBLIC
3
"-//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=GBK
16
property>
17
18
19
<propertyname="dialect">
20
org.hibernate.dialect.MySQLDialect
21
property>
22
23
24
<propertyname="myeclipse.connection.profile">
25
MySql_localhost
26
property>
27
28
29
<propertyname="connection.password">rootproperty>
30
31
32
<propertyname="connection.driver_class">
33
com.mysql.jdbc.Driver
34
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:[email protected]
5
*@versionAug30,20088:05:41AM
6
*@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完成
1
xmlversion="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
1
packageorg.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:[email protected]
14
*@versionAug30,20088:27:53AM
15
*@具体操作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
//从全局配置文件中取出SessionFactory
30
SessionFactoryfactory=config.buildSessionFactory();
31
32
//从SessionFactory中取出一个Session
33
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
1
packageorg.lxh.hibernate.demo01;
2
3
importjava.util.Iterator;
4
importjava.util.List;
5
6
/**
7
*@author∪∩BUGE-mail:[email protected]
8
*@versionAug29,20089:53:52PM
9
*@POJO类的测试类
10
*/
11
publicclassTestPO{
12
13
/**
14
*@paramargs
15
*/
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("[email protected]");
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
例子结构: