Hibernate基础

上传人:s9****2 文档编号:497868686 上传时间:2023-09-29 格式:DOC 页数:36 大小:1,022KB
返回 下载 相关 举报
Hibernate基础_第1页
第1页 / 共36页
Hibernate基础_第2页
第2页 / 共36页
Hibernate基础_第3页
第3页 / 共36页
Hibernate基础_第4页
第4页 / 共36页
Hibernate基础_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《Hibernate基础》由会员分享,可在线阅读,更多相关《Hibernate基础(36页珍藏版)》请在金锄头文库上搜索。

1、北京魔乐科技软件学院 联系电话:010-512833461、课程名称:Hibernate2、知识点2.1、上次课程的主要知识点2.2、本次预计讲解的知识点3、具体内容3.1、Hibernate框架和ORMappingORMapping是将对象与表建立映射关系,通过操作对象从而影响到数据库表中数据的开发模式。Hibernate就是实现ORMapping的一个框架,除了Hibernate以外还有一些框架可以实现ORMapping功能。优点缺点JDBC执行速度快,执行的是SQL语句编写速度慢,重复代码比较多。EJB1、2提出了ORMapping的概念并提供了TO(Transfer Object)的概

2、念,与vo作用类似,都是用来描述表中的数据的,但多实现了一个序列化接口。设计不合理,无法使用。JDO简单直接连接不容易管理。Apache OJB无无法单独使用,必须结合其他框架一起使用,结合的最好的是JDO。而且官方没有提供比较完善的开发文档iBATIS/MyBATIS比Hibernate执行速度快,比JDBC开发速度快。比Hibernate开发速度慢,比JDBC执行速度慢。Hibernate成熟,下载量大,有开发工具支持执行效率低EJB3使用了Hibernate3的源代码。使用了Annotation配置,替代了XML,使配置文件简化,提高执行效率。还是采用分布式开发,因此架构仍然比较复杂,成

3、本高。这里的ORMapping指的是 vo 与 table表 的映射关系。vo在开发ORMapping时有其他的称呼:TO(EJB2),POJO(Hibernate中,Plain Olds Java Object,经典Java对象,只包含属性和getter,setter方法的对象。)映射时,vo与表的关系可以通过两种方式来配置:1) XML:传统方式,iBATIS和Hibernate使用该方式a) 优点:配置文件单独存在,方便进行查看和维护。2) Annotation:JDK1.5后提供的新方式,MyBATIS,hibernate3.2以上,EJB3支持。a) 优点:执行速度比XML快。这样在

4、开发Hibernate时,每多一个vo(pojo)对象,就需要建立一个xml文件来描述这个vo与表的关系,这个XML称为映射文件,一般命名为: 类名.hbm.xml。除了映射文件外,hibernate还会包含一个自己的核心配置文件,名称为:hibernate.cfg.xml开发Hibernate时,不再使用JDBC中提供的Connection,PreparedStatement,ResultSet。而是改为Hibernate提供的替代类。Connection SessionPreparedStatement QueryResultSet List3.2、使用Hibernate完成基本CRUD功

5、能建立项目,并加入Hibernate支持。建议在加入支持前,先配置一个数据库连接。打开数据库管理界面。在这个DB Browser中建立一个新的数据库连接。填写内容后,点Test Driver测试如果成功,则表示连接配置完成。配置好后,如果可以看到以下内容,则表示配置成功。下面就可以开始为项目加入Hibernate支持。加入支持时,注意将支持包加入到lib目录下。配置Hibernate核心配置文件。选择之前配置好的连接,加入到这里。建立一个新的包,并自动生成HibernateSessionFactory类,该类的功能与JDBC中的DataBaseConnection的作用相同。在生成的核心配置文

6、件中,包含了三部分配置:1) 左边:数据库连接。2) 右上:属性配置,可以对hibernate执行过程的一些属性进行调整,例如:a) 显示执行的sql语句。b) 格式化显示的sql语句。3) 右下:所有映射文件所在的位置。生成的HibernateSessionFactory类可以提供打开连接和关闭连接的功能,而且提供的连接是支持数据源连接池的。package cn.mldn.hibernate.dbc;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Con

7、figuration;public class HibernateSessionFactory / 配置文件的位置和文件名private static String CONFIG_FILE_LOCATION = /hibernate.cfg.xml;/ 用来实现数据源功能的核心类。类似一个Map,key保存访问线程,value保存数据库连接对象Sessionprivate static final ThreadLocal threadLocal = new ThreadLocal();/ 用来读取核心配置文件,并进行解析private static Configuration configur

8、ation = new Configuration();/ 创建Session对象private static org.hibernate.SessionFactory sessionFactory;private static String configFile = CONFIG_FILE_LOCATION;static try configuration.configure(configFile);/ 通过读取的配置文件,搭建连接池。 sessionFactory = configuration.buildSessionFactory(); catch (Exception e) Syst

9、em.err.println(% Error Creating SessionFactory %);e.printStackTrace();private HibernateSessionFactory() /* * 取得数据库连接 * return Session * throws HibernateException */public static Session getSession() throws HibernateException Session session = (Session) threadLocal.get();if (session = null | !session

10、.isOpen() if (sessionFactory = null) rebuildSessionFactory();session = sessionFactory.openSession();threadLocal.set(session);return session;public static void rebuildSessionFactory() try configuration.configure(configFile);sessionFactory = configuration.buildSessionFactory(); catch (Exception e) Sys

11、tem.err.println(% Error Creating SessionFactory %);e.printStackTrace();/* * 关闭一个连接 * throws HibernateException */public static void closeSession() throws HibernateException Session session = (Session) threadLocal.get();/ 清空当前线程使用的SessionthreadLocal.set(null);/ 将连接放回连接池if (session != null) session.cl

12、ose();public static org.hibernate.SessionFactory getSessionFactory() return sessionFactory;public static void setConfigFile(String configFile) HibernateSessionFactory.configFile = configFile;sessionFactory = null;public static Configuration getConfiguration() return configuration;重点掌握连接池的实现方式,以及数据库连

13、接的取得和关闭方法。下面开始编写pojo,不需要直接手工建立类,而是通过表生成。在要建立pojo的表上选择生成映射。对于表中的主键值,有很多种生成方式,常用的有:1) native:自动增长,通用的形式。2) assigned:程序添加。3) increment:mysql,sqlserver,db2的自增长。4) sequence:oracle的自增长5) foreign:主键同时是外键,一对一关系时使用。6) uuid:随机生成主键值。可以选择uuid.hex(16位)或uuid.string(128位)完成选择No,不需要切换到Hibernate映射界面。package cn.mldn.

14、hibernate.pojo;import java.sql.Timestamp;public class News implements java.io.Serializable private Integer nid;private String title;private String content;private Timestamp postDate;private Integer type;public News() public News(String title, String content, Timestamp postDate, Integer type) this.title = title;this.content = content;this.postDate = postDate;this.type = type;public Integer ge

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号