一、数据库:Oracle数据库的使用(SQL语句,关联查询),数据库设计工具(Power Designer)java
二、Java基础:IO操做,线程和反射,类集,JDBC数据库
三、JavaWeb:MVC,DAO设计模式
Hibernatesession
Spring架构
Struts2app
AJAX,JQuery框架
框架的优势:开发速度快,规范数据库设计
后台框架:Hibernate,MyBATIS(iBATIS),EJBide
前台框架(MVC):Struts(1/2),SpringMVC,JSF工具
Spring框架:Spring,Seam
JS框架:JQuery,ExtJS
ORMapping:对象关系映射,经过在类与表之间创建关系,使程序操做类能自动影响到表中的数据。
ORMapping的发展过程:
优势 |
缺点 |
|
JDBC |
好学,执行速度快 |
重复代码比较多,开发速度慢 |
EJB1,2 |
提出了ORMapping |
除了有概念,什么都不行。 |
JDO |
简单 |
链接控制有问题 |
Apache OJB |
无 |
太多 |
Hibernate |
不少 |
执行速度慢 |
MyBATIS |
比Hibernate执行速度快 比JDBC代码简单 |
比Hibernate代码多 比JDBC执行速度慢 |
EJB3 |
使用了Hibernate的源代码 |
架构仍是EJB的原始架构 |
Hibernate创建ORMapping关系的方式是使用 XML或Annotation(在Hibernate3.2以上版本才可使用)
JDBC完成数据库操做的支持类:Hibernate
ConnectionàSession
PreparedStatementàQuery
ResultSetàList
DataBaseConnectionàHibernateSessionFactory
在数据库中创建一张数据表,这里创建一个张新闻表(news)
CREATETABLE news ( |
在MyEclipse中须要创建项目,并加入Hibernate框架支持。
但在这些以前,建议先在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; } }
原理能够参考下图来看: