Hibernate学习笔记.docx
- 文档编号:2362536
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:72
- 大小:101.23KB
Hibernate学习笔记.docx
《Hibernate学习笔记.docx》由会员分享,可在线阅读,更多相关《Hibernate学习笔记.docx(72页珍藏版)》请在冰豆网上搜索。
Hibernate学习笔记
Hibernate项目的构建与配置
1.在项目里倒入Hibernate所必须的Jar包
(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。
只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。
(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。
倒入此路径下的所有jar包就可以了。
2.配置hibernate.cfg.xml文件
(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。
(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
(设置显示Hibernate产生的SQL语句)
(设置MySQL的SQL语法的方言)
(设置MySQL的驱动程序)
org.gjt.mm.mysql.Driver
(设置MySQL的数据库路径、用户名、密码)
mysql:
///java
(设置当数据库要保存的表不存在时,就新建表)
(设置对象与数据库表的关系映射文件)
(3)此配置文件一般放在项目的src目录下。
(注意:
在项目中要加入MySQL的驱动jar包)
3.编写实例类与对象-关系映射文件
(1)一个实例类对象就是数据库表里的一条记录,关系映射文件就指明了类的成员变量与数据库字段间的关系以及该类对象保存在哪个表中。
(2)实例类User.java:
publicclassUser{
privatelongid;
privateStringname;
privateintage;
privatecharsex;
publiclonggetId(){
returnid;
}
publicvoidsetId(longid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicchargetSex(){
returnsex;
}
publicvoidsetSex(charsex){
this.sex=sex;
}
@Override
publicStringtoString(){
return"User[id="+id+",name="+name+",age="+age+",sex="
+sex+"]";
}
}
(3)User.java对应的User.hbm.xml文件:
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
(package的值是User.java所在的包路径)
(name的值是实例的类名,table的值是对应的数据库表名)
(name的值是实例的主键名)
(定义了主键值生成器)
(定义实例属性与数据库表字段的对应关系)
(4)User.hbm.xml文件与User.java文件放在同一目录下。
4.编写测试类
(1)测试类Hibernate.java如下:
packagetest;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
importorg.hibernate.service.ServiceRegistry;
importorg.hibernate.service.ServiceRegistryBuilder;
importvo.User;
publicclassHibernate{
publicstaticvoidmain(String[]args){
Configurationcfg=newConfiguration();
cfg.configure();
ServiceRegistrysr=newServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.buildServiceRegistry();
SessionFactorysf=cfg.buildSessionFactory(sr);
Sessions=sf.openSession();
Transactiontx=s.beginTransaction();
Useru=newUser();
u.setName("KKKK");
u.setAge(20);
u.setSex('f');
s.save(u);
mit();
s.close();
System.out.println("OK");
}
}
(2)运行Hibernate.java即可在数据库里保存一条记录!
!
!
Hibernate核心知识
1.创建Session对象操作数据库
(1)创建Session对象的过程
•创建Configuration对象使用new关键字,如:
Configurationcfg=newConfiguration()。
•读取Hibernate配置文件(hibernate.cfg.xml),有如下三种方式:
cfg.configure();//读取默认名称的配置文件
cfg.configure("hibernate.cfg.xml");//读取指定名称的配置文件
cfg.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
.setProperty("hibernate.connection.datasource","java:
comp/env/jdbc/test")
.setProperty("hibernate.order_updates","true");//程序设置配置属性
•读取对象—关系映射文件,有如下两种方式:
cfg.addResource("Student.hbm.xml").addResource("Teacher.hbm.xml");//读取配置文件
cfg.addClass(vo.Student.class).addClass(vo.Teacher.class);//读取类
•得到SessionFactory,得到了该对象就可以得到很多Session对象,有如下两种方式:
ServiceRegistrysr=newServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.buildServiceRegistry();
SessionFactorysf=cfg.buildSessionFactory(sr);
SessionFactorysessions=cfg.buildSessionFactory();//此种方式已过时
•得到Session对象的两种方式以及区别:
Sessions=sf.getCurrentSession();//要配置"hibernate.current_session_context_class"如果前一个Session未close,从上下文得到Session,不一定会new一个新的。
建议使用。
Sessions=sf.openSession();//一定会new一个新的Session
注意:
getCurrentSession()方法创建的Session对象提交事务时就会自动关闭Session,不必调用close()方法。
而openSession()不会,需要调用close()方法关闭Session。
•得到一个Session后就可以对数据进行增删查改了。
可以把一个Session看成一个事务。
(2)事务的开始与提交
Transactiontx=s.beginTransaction();//开始事务
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)