KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dlog4j > ManagerBase


1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU Library General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15  */

16 package dlog4j;
17
18 import java.sql.Connection JavaDoc;
19 import java.sql.ResultSet JavaDoc;
20 import java.sql.SQLException JavaDoc;
21 import java.sql.Statement JavaDoc;
22
23 import javax.servlet.ServletContext JavaDoc;
24 import javax.sql.DataSource JavaDoc;
25
26 import net.sf.hibernate.HibernateException;
27 import net.sf.hibernate.Session;
28 import net.sf.hibernate.SessionFactory;
29
30 /**
31  * 所有Manager类的基类,用于封装所有访问Hibernate以及数据库的方法
32  * 该了在DlogActionServlet的init过程中被初始化
33  * @author Liudong
34  */

35 public class ManagerBase {
36     
37     private static ServletContext JavaDoc context;
38     
39     protected static void init(ServletContext JavaDoc servletContext) {
40         if(servletContext!=null)
41             context = servletContext;
42     }
43     /**
44      * 获取Hibernate持久层的操作实例
45      * @return
46      */

47     public static Session getSession() throws SQLException JavaDoc{
48         SessionFactory sessions = (SessionFactory)context.getAttribute(dlog4j.Globals.HIBERNATE_SESSIONS_KEY);
49         return sessions.openSession(getConnection());
50     }
51     /**
52      * 获取到数据库的连接句柄
53      * @return
54      * @throws SQLException
55      */

56     public static Connection JavaDoc getConnection() throws SQLException JavaDoc{
57         DataSource JavaDoc dataSource = (DataSource JavaDoc)context.getAttribute(org.apache.struts.Globals.DATA_SOURCE_KEY);
58         return dataSource.getConnection();
59     }
60     /**
61      * 提交Hibernate操作
62      * @param session
63      * @throws SQLException
64      * @throws HibernateException
65      */

66     public static void commitSession(Session session, boolean close) throws SQLException JavaDoc, HibernateException{
67         session.flush();
68         session.connection().commit();
69         if(close){
70             session.connection().close();
71             session.close();
72         }
73     }
74     /**
75      * 关闭session
76      * @param session
77      * @throws SQLException
78      * @throws HibernateException
79      */

80     public static void closeSession(Session session) throws SQLException JavaDoc,HibernateException{
81         session.connection().close();
82         session.close();
83     }
84     public static void close(Object JavaDoc obj1,Object JavaDoc obj2,Object JavaDoc obj3){
85         close(obj1);close(obj2);close(obj3);
86     }
87     /**
88      * 资源释放
89      * @param obj
90      */

91     public static void close(Object JavaDoc obj){
92         if(obj==null)
93             return;
94         try{
95             if(obj instanceof Connection JavaDoc)
96                 ((Connection JavaDoc)obj).close();
97             if(obj instanceof Statement JavaDoc)
98                 ((Statement JavaDoc)obj).close();
99             if(obj instanceof ResultSet JavaDoc)
100                 ((ResultSet JavaDoc)obj).close();
101             if(obj instanceof Session)
102                 closeSession((Session)obj);
103         }catch(Exception JavaDoc e){}
104         obj = null;
105     }
106
107 }
108
Popular Tags