Hibernate深入浅出(三)-----读深入浅出hibernate有感

Hibernate深入浅出(三)-----读深入浅出hibernate有感
    无论是怎样的应用系统,都无法脱离对资源的管理和使用。而对于持久层而言,资源的合理管理和调度则显得尤为重要。
    资源管理机制的设计对于系统整体表现往往可以产生关键性影响。同时,除去性能之外,良好的资源管理机制还能为系统的伸缩性、可维护性带来相当的提升。
    Connection Pool:数据库连接池技术带来的优势
    1、资源重用
    由于数据库连接得以重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性。
    2、更快的系统响应速度
    数据库连接池在初始化过程中,往往已经创建了若干数据库连接池置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。
    3、新的资源分配手段
    对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置,实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源
    4、统一的连接管理,避免数据库连接泄露
    在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄露。
   
   
public   class  DBConnectionPool  implements  ConnectionPool{
      
private  statci Vector pool;
      
private   final   int  POOL_MAX_SIZE  =   20 ;
      
// 获取数据库连接,如果当前池中有可用连接,则将池中最后一个返回,如果没有,则新建一个返回
       public   synchronized  Connection getConnection() throws  DBException{
        
if (pool == null ){
          pool 
=   new  Vector();
        }
        Connection conn;
        
if (pool.isEmpty()){
          conn 
=  createConnection();
        }
else {
          
int  last_idx  =  pool.size() - 1 ;
          conn 
=  (Connection)pool.get(last_idx);
          pool.remove(pool.get(last_idx));
        }
        
return  conn;
      }
    
// 将使用完毕的数据库连接放回备用池中
     public   synchronized   void  releaseConnection(Connection conn){
      
if (pool.size() > POOL_MAX_SIZE){
        
try {
          conn.close();
        }
catch (SQLException e){
          e.printStackTrace();
        }
      }
else {
        pool.add(conn);
      }
    }
    
// 读取数据库配置信息,从数据库连接池中获得数据库连接
     private   static  Connection createConnection() throws  DBException{
      Connection conn;
      
try {
        Class.forName(
" oracle.jdbc.driver.OracleDriver " );
        conn 
=  DriverManager.getConnection( " jdbc:oracle:thin:@localhost:1521:oracle " , " personal " , " personal " );
        
return  conn;
      }cacth(ClassNotFoundException e){
        
throw   new  DBException( " ClassNotFoundException when loading JDBC Driver " );
      }
    }
    }
   
   

你可能感兴趣的:(Hibernate深入浅出(三)-----读深入浅出hibernate有感)