准备:建表
用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
xml version='1.0' encoding='UTF-8'?>2DOCTYPE hibernate-configuration PUBLIC3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">567891011rootproperty>12131415 jdbc:mysql://localhost:3306/STMS?useUnicode=true&characterEncoding=GBK16property>17181920 org.hibernate.dialect.MySQLDialect21property>22232425 MySql_localhost26property>272829rootproperty>30313233 com.mysql.jdbc.Driver34property>353637trueproperty>3839404142session-factory>4344hibernate-configuration>
二:给项目加入Hibernate支持
选中刚刚新建的项目—MyEcplipse—Project Capabilites—Add Hibernate Capabilites
Next—Next—选择连接数据库的连接名—Next--
点击Finash完成
三:建立Person表的POJO类
1
packageorg.lxh.hibernate.demo01;23
/** *//**4 *@author∪∩BUG E-mail: tidelgl@163.com5 *@versionAug 30, 2008 8:05:41 AM6 * @person表的POJO类,类名与表名相同7*/8
publicclassPerson{910//以下的属性与Person表中的字段名相同11privateString id;12privateString name;13privateString password;14privateString sex;15privateString email;1617
publicString getId(){18returnid;19 }2021
publicvoidsetId(String id){22this.id=id;23 }2425
publicString getName(){26returnname;27 }2829
publicvoidsetName(String name){30this.name=name;31 }3233
publicString getPassword(){34returnpassword;35 }3637
publicvoidsetPassword(String password){38this.password=password;39 }4041
publicString getSex(){42returnsex;43 }4445
publicvoidsetSex(String sex){46this.sex=sex;47 }4849
publicString getEmail(){50returnemail;51 }5253
publicvoidsetEmail(String email){54this.email=email;55 }5657}58
四:通过Hibernate反向工程建立person表与Person类的映射
首先调出DB Browser视图(Windows—view show—other—MyEclipse datebase—DB Browser)—展开MySQL_localhost至表person—右键表person—Hibernate Reverse Engineering
Finash完成
1
xml version="1.0" encoding="utf-8"?>2DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">478131415161718id>192021property>222324property>25class>26hibernate-mapping>27
五:建立具体操作Hibernate的类
src/org.lxh.hibernate.demo01.PersonOperate.java
1
packageorg.lxh.hibernate.demo01;23importjava.util.Iterator;4importjava.util.List;56importorg.hibernate.Query;7importorg.hibernate.Session;8importorg.hibernate.SessionFactory;9importorg.hibernate.Transaction;10importorg.hibernate.cfg.Configuration;1112
/** *//**13 *@author∪∩BUG E-mail: tidelgl@163.com14 *@versionAug 30, 2008 8:27:53 AM15 * @ 具体操作Hibernate的类16 * @ 功能:增加,删除,个性,按ID查询,模糊查询,查询全部操作17 * @注意导入的包:从org.hibernate.*;18*/19
publicclassPersonOperate{20//在Hibernate中所有的操作都是通过Session来完成21privateSession session=null;2223//Session 是一个接口,必须实例化24//在构造方法中实例实化Session对象25
publicPersonOperate(){26//找到Hibernate配置文件27Configuration config=newConfiguration().configure();2829//从全局配置文件中取出SessionFactory30SessionFactory factory=config.buildSessionFactory();3132//从SessionFactory中取出一个Session33this.session=factory.openSession();3435 }3637//所有的操作都是通过Session进行38//(1)实现向数据库中插入数据39
publicvoidinsert(Person p){40//1.开始事务41Transaction tran=this.session.beginTransaction();4243//2.执行语句44this.session.save(p);4546//提交事务47tran.commit();48 }4950//(2)实现修改数据库的数据51
publicvoidupdate(Person p){52//1.开始事务53Transaction tran=this.session.beginTransaction();5455//2.执行语句56this.session.update(p);5758//提交事务59tran.commit();6061 }6263//(3)实现查询数据库的数据64//使用HQL按ID查询65
publicPerson queryById(String id){66 Person p=null;6768//使用Hibernate查询语句(HQL)69String hql="From Person as p where p.id=?";//从Person类中对象p的id查7071//通过Query接口查询72Query q=this.session.createQuery(hql);73 q.setString(0, id);//下标从0开始(id是第一个属性)74List l=q.list();//导入的包是 java.util.List;75Iterator iter=l.iterator();76
if(iter.hasNext()){77 p=(Person) iter.next();78 }79returnp;80 }8182//(4)实现删除数据库的数据83
publicvoiddelete(Person p){84//1.开始事务85Transaction tran=this.session.beginTransaction();8687//2.执行语句88this.session.delete(p);8990//提交事务91tran.commit();9293 }9495//通过HQL语句实现删除数据库的数据(推荐)96
publicvoiddelete(String id){97 String hql="delete Person where id=?";98 Query q=this.session.createQuery(hql);99//设置参数100q.setString(0, id);101//执行更新语句102q.executeUpdate();103//提交事务处理104this.session.beginTransaction().commit();105106 }107108//通过HQL查询全部数据109
publicList queryAll(){110 List l=null;111 String hql="From Person as p";112 Query q=this.session.createQuery(hql);113 l=q.list();114returnl;115 }116117//通过HQL查询全部数据118
publicList queryByLike(String cond){119 List l=null;120//条件121String hql="From Person as p where p.name like ?";122 Query q=this.session.createQuery(hql);123//设置参数124q.setString(0,"%"+cond+"%");125 l=q.list();126returnl;127 }128129}130
六:建立测试类
src/org.lxh.hibernate.demo01.TestPO.java
1
packageorg.lxh.hibernate.demo01;23importjava.util.Iterator;4importjava.util.List;56
/** *//**7 *@author∪∩BUG E-mail: tidelgl@163.com8 *@versionAug 29, 2008 9:53:52 PM9 * @POJO类的测试类10*/11
publicclassTestPO{1213
/** *//**14 *@paramargs15*/16
publicstaticvoidmain(String[] args){1718//生成POJO类实例化对象19Person p=newPerson();2021//p.setId("Hibernate");22//p.setId("MySQL");23//p.setName("学习笔记");24p.setName("使用用Hibernate");25 p.setPassword("123");26 p.setEmail("tidelgl@163.com");27 p.setSex("男");2829//实例化PersonOperate对象30PersonOperate po=newPersonOperate();3132//1.插入数据33//po.insert(p);3435//2.修改数据36//po.update(p);3738//3.查询数据39//Person p = po.queryById("Hibernate");40//System.out.println(p.getName());4142//通过HQL查询全部数据43//List l = po.queryAll();44//通过HQL模糊查询45//List l = po.queryByLike("用");46//Iterator iter = l.listIterator();47//while(iter.hasNext()){48//Person p = (Person)iter.next();49//System.out.println(p.getName());50//51//}5253//4.删除数据54//po.delete(p);//通过查询结果删除55//po.delete("Hibernate");//通过HQL语句删除565758 }5960}61
例子结构: