获取数据库连接-bboss persistent

 

bboss persistent下载地址

https://sourceforge.net/project/showfiles.php?group_id=238653&package_id=302766&release_id=647144


获取数据库连接-bboss persistent
bboss persistent获取数据链接的两种方式
1.从缺省数据库连接池中获取数据库连接:
   
        java.sql.Connection connection = DBUtil.getConection();
        poolman中缺省的数据库连接池就是在poolman.xml文件中配置的第一个连接池
   
2.从指定的数据库连接池中获取数据库连接
   
        java.sql.Connection connection = DBUtil.getConection(dbname);
        dbname为poolman.xml中<dbname></dbname>节点中间指定的数据库连接池的名称,例如:
        <dbname>bspf</dbname>

 

3.获取数据库连接的事务性


通过上述两种方式获取到的connection根据不同的环境具有不同特点,主要有两种环境,一种是事务环境,另一种是无事务环境,分别描述如下:
事务环境是指在数据库操作执行的上下文中使用TransactionManager组件开启了一个事务的环境。
如果在事务环境下获取connection,那么connection的事务将与上下文中的事务结合在一起,也就是说connection的事务随着上下文环境事务的提交而提交,也随着上下文事务的回滚而回滚,而且connection的回滚也会导致整个上下文事务的回滚。同时connection的setAutocommit方法和close方法将不会影响上下文事务,就是说不会起作用。
在事务环境下获取数据库链接后,不需显示关闭connection,也不需要显示commit,但是需要显示rollback,事务的提交和链接的关闭由外部事务自动关闭和提交。
在没有事务的环境下获取connection时,connection具有原始的jdbc connection的所有特性和方法,这里就不多说了。

 

4 .直接使用数据库连接需要注意的地方

 

数据库连接池有效地管理着一组高度重用的数据库连接,如果通过持久层框架提供的组件(DBUtil,PreparedDBUtil,CallableDBUtil)操作数据库时,数据库连接的使用和管理由这些组件自动管理,无需应用程序去处理;但是如果程序员如果直接从数据库连接池中获取连接使用的话,那就一定要确保连接使用完毕后关闭该链接,释放操作过程中使用的所有资源,操作的一般标准模式为:

                Connection con = null;
                Statement stmt = null;
                ResultSet rs = null;
                try {
                       
                        con = DBUtil.getConection();
                        //use the con varable。
                        stmt = con.create Statement;
                        rs = stmt.execute some sql ;
                         
                       
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally
                {
                        if(rs != null)
                        {
                                try {
                                        rs.close();
                                } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        if(stmt != null)
                        {
                                try {
                                        stmt.close();
                                } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        if(con != null)
                        {
                                try {
                                        con.close();
                                } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                }

 

 

上一篇:在 Linux 上用 SELinux 或 AppArmor 实现强制访问控制(MAC)


下一篇:bboss aop 实践(2)