一、數據庫: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; } }
原理能夠參考下圖來看: