本来是做了个文档的有图,那样更加细化了,每个步骤都上了图.第一次写这样的Hibernate程序极易出错. 没办法这里上传不了,如果大家需要请加QQ9956164。我及时发送给你,希望对你学习Hibernate有帮助.
通过对hibernate的学习发现,实践出真知。很多书上都是用文字来描写的,导致很多人配置hibernate老是出错(我也是其中之一)。所以决定写份图文并茂的笔记方便大家对hibernate的学习。这是个经典实例哦。
案例实现,完成最基本的用户添加、删除、查找、查询单个、查询全部 ;
通过MyEclipse6.5进行开发
步骤一:创建web Project
步骤二:将hibernate jar包导入到开发包中
步骤三:
选择导入相应的jar包,选择下一步
步骤四:
这个步骤是创建全局的hibernate文件(要多操作,不同的数据与POJO映射需要不同的想象,极易出错,个人认为起码要精通)
步骤五:
不选择创建默认工厂,点击完成。
步骤七:配置数据库的连接方式。
步骤八:核心配置文件终于来啦。
步骤九:找出MyEclipse中自带的数据库浏览器
步骤十:创建数据库操作文件,方便后续操作
创建数据库的代码如下所示:我用的是Mysql5.0
drop
database
person
;
create
database
person
;
use
person
;
drop
table
person
;
create
table
person
(
id
varchar
(32)
primary
key
not
null
,
name
varchar
(20)
not
null
,
password
varchar
(20)
not
null
) ;
insert
into
person
values
(
'001'
,
'Ricky'
,
'admin'
) ;
insert
into
person
(id,
name
,
password
)
values
(
'2'
,
'Chris'
,
'adminliwei'
) ;
commit
;
select
*
from
person
;
再次检查配置是否正确。
执行一遍所写的数据库脚本代码。
步骤十一:
环境基本搭建完毕 接下来创建POJO
1、 构建Person类,它的属性必须与数据库的字段一致方便做好后面的映射。
包含三个基本用户信息:
package
org.lw.hibernate.demo1;
public
class
Person {
private
String
name
;
private
String
password
;
private
String
id
;
public
String getName() {
return
name
;
}
public
void
setName(String name) {
this
.
name
= name;
}
public
String getPassword() {
return
password
;
}
public
void
setPassword(String password) {
this
.
password
= password;
}
public
String getId() {
return
id
;
}
public
void
setId(String id) {
this
.
id
= id;
}
}
2、 配置持久层与POJO(也就是表与Person类的映射)的映射
3、映射Person类的选项,暂时按我的选吧。下一步
4、主键自动指派,直接下一步。
5、设置映射属性
6、完成映射。
完成后生成Person.hbm.xml文件 代码所示
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
DOCTYPE
hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<
hibernate-mapping
>
<
class
name
=
"org.lw.hibernate.demo1.Person"
table
=
"person"
catalog
=
"person"
>
<
id
name
=
"id"
type
=
"string"
>
<
column
name
=
"id"
length
=
"32"
/>
<
generator
class
=
"assigned"
>
generator
>
id
>
<
property
name
=
"name"
type
=
"string"
>
<
column
name
=
"name"
length
=
"20"
not-null
=
"true"
/>
property
>
<
property
name
=
"password"
type
=
"string"
>
<
column
name
=
"password"
length
=
"20"
not-null
=
"true"
/>
property
>
class
>
hibernate-mapping
>
之后进入hibernate全局配置文件中,通过界面添加person配置文件
数据映射完成 接下来编写PersonOperate类
package
org.lw.hibernate.demo1;
import
java.util.Iterator;
import
java.util.List;
import
org.hibernate.Query;
import
org.hibernate.Session;
import
org.hibernate.SessionFactory;
import
org.hibernate.Transaction;
import
org.hibernate.cfg.Configuration;
/*
*
具体操作
Hibernate
的类:
*
增加、删除、修改、按
ID
查询、模糊查询、查询全部操作
* */
public
class
PersonOperate {
//
在
Hibernate
中,所有的操作都是通过
Session
完成
//
此
Session
不同于
JSP
的
Session
private
Session
session
=
null
;
//
在构造方法之中实例化
session
对象
//
这个构造初始化是一般步骤
重配置文件中取出
session
在开发中最好定义个类或放
//
进配置文件里
.
//
只要用到
hibernate
都会用到它,建议初学着看看他的
API
public
PersonOperate() {
//
找到
Hibernate
配置
Configuration config =
new
Configuration().configure();
//
从配置中取出
SessionFactory
SessionFactory factory = config.buildSessionFactory();
//
从
Session
工厂中取出
session
this
.
session
= factory.openSession() ;
}
//
所有的操作都是通过
session
进行的
//
向数据库中增加数据
public
void
insert(Person p){
//
开始事务
Transaction tran =
this
.
session
.beginTransaction();
//
开始操作
this
.
session
.save(p) ;
//
提交事务
tran.commit() ;
//
关闭
session
this
.
session
.close() ;
}
public
void
update(Person p){
this
.
session
.update(p) ;
this
.
session
.beginTransaction().commit() ;
}
//
是用
HQL
语言删除、操作差不多的就不再注释了,建议查询
hibernate
官方
API
public
void
delete(String id){
//HQL
语法
String hql =
"delete Person where id=? "
;
//
使用
Query
接口
Query q =
this
.
session
.createQuery(hql) ;
//
第一个预编译参数的下标从
0
开始
q.setString(0, id) ;
//
执行语句
q.executeUpdate() ;
//
提交事务
this
.
session
.beginTransaction().commit() ;
}
public
Person queryById(String id){
Person per =
null
;
String hql =
"from Person as p where p.id=?"
;
Query q =
this
.
session
.createQuery(hql) ;
q.setString(0, id) ;
List l = q.list() ;
Iterator iter = l.iterator() ;
if
(iter.hasNext()){
per = (Person)iter.next();
}
return
per ;
}
public
List queryByLike(String cond)
{
List l =
null
;
String hql =
"from Person as p where p.name like ?"
;
Query q =
this
.
session
.createQuery(hql) ;
q.setString(0,
"%"
+cond+
"%"
) ;
l = q.list() ;
return
l ;
}
public
List queryAll(){
List l =
null
;
String hql =
"from Person"
;
Query q =
this
.
session
.createQuery(hql) ;
l = q.list() ;
return
l ;
}
最后编写测试类
package org.lw.hibernate.demo1;
import java.util.Iterator;
import java.util.List;
public class POTest {
public static void main(String[] args) {
Person p = new Person() ;
p.setId("3") ;
p.setName("李维") ;
p.setPassword("admin") ;
PersonOperation po = new PersonOperation() ;
//
添加
//
po.insert(p) ;
//
修改
po.update(p) ;
//
po.delete("1") ;
//
查询单个
//
p = po.queryById("1") ;
//
System.out.println(p.getName());
//查询所有
//
List l = po.queryAll() ;
//
Iterator iter = l.iterator() ;
//
while(iter.hasNext()){
//
p = (Person)iter.next();
//
System.out.println(p.getName()) ;
//
}
//模糊查询
//
List l = po.queryByLike("r") ;
//
Iterator iter = l.iterator() ;
//
while(iter.hasNext()){
//
p = (Person)iter.next();
//
System.out.println(p.getName()) ;
//
}
}
}
运行测试文件
如果出现一下结果,恭喜你,你的第一个hibernate实例运行成功
最后在MyEclipse中查询刚刚插入的结果
终于完成了不容易啊,希望能够帮到对hibernate充满好奇的你进入hibernate,中间省略了许多注释。
希望与大家多多交流,可能还有不少的错误欢迎大家批评指证。