hibernate基本架构(1)
2014-03-03 18:47
453 查看
1、课程名称: Hibernate基本架构
2、知识点
2.1、上次课程的主要知识点
1、数据库:Oracle数据库的使用(SQL语句,关联查询),数据库设计工具(Power Designer)2、Java基础:IO操作,线程和反射,类集,JDBC
3、JavaWeb:MVC,DAO
2.2、本次预计讲解的知识点
HibernateSpring
Struts2
AJAX,JQuery
3、具体内容
3.1、框架概述(了解)
框架的优点:开发速度快,规范后台框架:Hibernate,MyBATIS(iBATIS),EJB
前台框架(MVC):Struts(1/2),SpringMVC,JSF
Spring框架:Spring,Seam
JS框架:JQuery,ExtJS
3.2、Hibernate框架与ORMapping概念(了解)
ORMapping:对象关系映射,通过在类与表之间建立关系,使程序操作类能自动影响到表中的数据。ORMapping的发展过程:
优点 | 缺点 | |
JDBC | 好学,执行速度快 | 重复代码比较多,开发速度慢 |
EJB1,2 | 提出了ORMapping | 除了有概念,什么都不行。 |
JDO | 简单 | 连接控制有问题 |
Apache OJB | 无 | 太多 |
Hibernate | 很多 | 执行速度慢 |
MyBATIS | 比Hibernate执行速度快 比JDBC代码简单 | 比Hibernate代码多 比JDBC执行速度慢 |
EJB3 | 使用了Hibernate的源代码 | 架构还是EJB的原始架构 |
JDBC完成数据库操作的支持类:Hibernate
ConnectionàSession
PreparedStatementàQuery
ResultSetàList
DataBaseConnectionàHibernateSessionFactory
3.3、Hibernate完成单表数据库操作(重点)
在数据库中建立一张数据表,这里建立一个张新闻表(news)CREATETABLE news ( idnumber(8) primarykey , title varchar2(50) notnull, content varchar2(500) notnull, pub_date datenotnull ); |
但在这些之前,建议先在MyEclipse里建立与数据库的连接。
选择建立一个新的数据库连接
点Test Driver,测试是否连接成功。
如果可以在连接中找到之前建立好的表,表示配置成功,可以开始建立项目。
加入Hibernate核心配置文件
如果要手工加入框架支持,需要加入以下两部分内容:
1) 支持jar包加入到WEB-INF/lib目录下2) Hibernate.cfg.xml加入到src目录下。
Hibernate核心配置文件的功能:
1) 配置数据库连接参数2) 加入Hibernate的属性配置,例如:a)
b)
生成的HibernateSessionFactory中,实现了连接池功能,要求掌握连接池的实现原理。
public class HibernateSessionFactory { // 配置文件的所在位置和名称 private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; // 用来实现连接池的,该类类似Map集合。 private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); // Hibernate用来读取配置文件的类 private static Configuration configuration = new Configuration(); // 用来建立连接的,该类就是连接池,使用单例设计模式 private static org.hibernate.SessionFactory sessionFactory; // 备用的配置文件位置 private static String configFile = CONFIG_FILE_LOCATION; // 静态块,类加载时最先执行 static { try { // 加载配置文件到内存中 configuration.configure(configFile); // 建立连接池以及里面的连接 sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * 取得数据库连接对象 * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { // 先从ThreadLocal中取得连接。 Session session = (Session) threadLocal.get(); // 如果手头没有连接,则取得一个新的连接 if (session == null || !session.isOpen()) { session = sessionFactory.openSession(); // 把取得出的连接记录到ThreadLocal中,以便下次使用。 threadLocal.set(session); } return session; } /** * 连接关闭的方法 * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); // 将ThreadLocal清空,表示当前线程已经没有连接。 threadLocal.set(null); // 连接放回到连接池 if (session != null) { session.close(); } } public static Configuration getConfiguration() { return configuration; } }
原理可以参考下图来看:
相关文章推荐
- Spring Boot + Jpa(Hibernate) 架构基本配置
- hibernate基本架构(3)
- hibernate基本架构(2)
- Spring Boot + Jpa(Hibernate) 架构基本配置详解
- Spring Boot + Jpa(Hibernate) 架构基本配置
- Spring Boot + Jpa(Hibernate) 架构基本配置
- Tapestry+spring+hibernate基本架构
- Spring Boot + Jpa(Hibernate) 架构基本配置
- Spring Boot + Jpa(Hibernate) 架构基本配置
- hibernate学习(1):hibernate基本架构和关系映射详解
- Spring Boot + Jpa(Hibernate) 架构基本配置
- Hibernate 查询语句HQL基本语法
- Java集合----基本架构
- Hibernate的基本映射数据类型
- Hibernate实现最基本的增删改查
- SSH:Hibernate框架(关系映射及基本配置)
- JavaEE--SSH--hibernate框架介绍及基本使用
- 浏览器探究——Framework层基本架构
- Hibernate基本知识
- android 系统基本架构-软件层次