`

hibernate中c3p0数据源用户名密码加密

阅读更多

spring2 配置文件 

Java代码 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.     <!--  数据源配置 -->  
  5. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
  6.         <property name="driverClass">  
  7.             <value>oracle.jdbc.driver.OracleDriver</value>  
  8.         </property>  
  9.         <property name="jdbcUrl" value="jdbc:oracle:thin:@IP:端口:SID" />  
  10.         <property name="acquireIncrement" value="1"/>  
  11.         <property name="idleConnectionTestPeriod" value="300"/>  
  12.         <property name="maxPoolSize" value="5"/>  
  13.         <property name="minPoolSize" value="1"/>  
  14.         <property name="initialPoolSize" value="1" />  
  15.         <property name="numHelperThreads" value="3"/>  
  16.         <property name="maxIdleTime" value="1200" />  
  17.         <property name="acquireRetryAttempts" value="2"/>  
  18.         <property name="preferredTestQuery" value=" select 1 from dual "/>  
  19.         <property name="testConnectionOnCheckin" value="true"/>  
  20.         <property name="properties" ref="dataSourceProperties"/> 
  21.     </bean>  
  22.       
  23.     <bean id="dataSourceProperties" class="PropertiesEncryptFactoryBean">  
  24.         <property name="properties">  
  25.             <props>  
  26.                 <prop key="user">xxxx加密后</prop>  
  27.                 <prop key="password">xxxxxxx加密后</prop>  
  28.             </props>  
  29.         </property>  
  30.     </bean>  



2.PropertiesEncryptFactoryBean(加密类) 

Java代码 
  1. import java.util.Properties;  
  2.   
  3. import org.springframework.beans.factory.FactoryBean;  
  4.   
  5. public class PropertiesEncryptFactoryBean implements FactoryBean {  
  6.   
  7.     private Properties properties;  
  8.       
  9.     public Object getObject() throws Exception {  
  10.         return getProperties();  
  11.     }  
  12.   
  13.     public Class getObjectType() {  
  14.         return java.util.Properties.class;  
  15.     }  
  16.   
  17.     public boolean isSingleton() {  
  18.         return true;  
  19.     }  
  20.   
  21.     public Properties getProperties() {  
  22.         return properties;  
  23.     }  
  24.   
  25.     public void setProperties(Properties inProperties) {  
  26.         this.properties = inProperties;  
  27.         String originalUsername = properties.getProperty("user");  
  28.         String originalPassword = properties.getProperty("password");  
  29.         if (originalUsername != null){  
  30.             String newUsername = deEncryptUsername(originalUsername);  
  31.             properties.put("user", newUsername);  
  32.         }  
  33.         if (originalPassword != null){  
  34.             String newPassword = deEncryptPassword(originalPassword);  
  35.             properties.put("password", newPassword);  
  36.         }  
  37.     }  
  38.       
  39.     private String deEncryptUsername(String originalUsername){  
  40.         return deEncryptString(originalUsername);  
  41.     }  
  42.       
  43.     private String deEncryptPassword(String originalPassword){  
  44.         return deEncryptString(originalPassword);  
  45.     }  
  46.     //简单加密  
  47.     private String deEncryptString(String originalString){  
  48.         StringBuilder newString = new StringBuilder();  
  49.         for (int i = 0; i < originalString.length(); i++) {  
  50.             char eachChar= originalString.charAt(i);  
  51.             char newChar = (char)(eachChar + i);  
  52.             newString.append(newChar);  
  53.         }  
  54.         return newString.toString();  
  55.     }  
  56.   
  57. }  

 



ComboPooledDataSource的properties属性可被注入user,password 
只有user,password两个属性是可配置,其他属性不存也不是取自properties(具体可看C3P0源码)

 

转自:http://aguu125.iteye.com/blog/579402

 

 

 

分享到:
评论

相关推荐

    c3p0数据库连接池下载

    5. **扩展性**:c3p0是模块化的,可以与其他数据源如Oracle UCP、HikariCP等结合使用,或者通过自定义实现来扩展其功能。 在实际使用中,你需要在项目中引入`c3p0-0.9.1.2.jar`这个库文件。这个版本的c3p0是2009年...

    Java基础学习42.pdf

    接下来,我们需要配置C3P0的数据源,这通常通过在Java配置文件中设置一系列参数来完成,如初始化大小、最大连接数、超时时间等。例如: ```properties # C3P0配置示例 com.mchange.v2.c3p0.min_size=5 ...

    springmvc整合Hibernate的登录实例带表结构

    - 配置 Hibernate:引入 Hibernate 相关依赖,配置 Hibernate 的核心文件(如 `hibernate.cfg.xml`),定义数据源、SessionFactory 等。 - 创建实体类:根据数据库表结构,创建对应的 Java 实体类,使用注解(@...

    用SSH2实现简单的用户登录注册删除功能.pdf

    数据源是连接数据库的关键,本例中使用了C3P0连接池,因为它提供了更丰富的配置选项。 4. **Hibernate配置**:`sessionFactory`配置包括数据源、JDBC驱动、URL、用户名和密码。此外,还需要设置连接池的大小(如...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    - Servlet接收到请求,从JavaBean中提取数据,执行验证操作(如检查用户名是否已存在、密码是否符合规则等)。 - 如果验证通过,Servlet将用户信息保存到数据库,并生成成功消息;如果验证失败,返回错误信息。 5...

    Struts_Spring_Hibernate_整合教程

    Spring提供了多种数据源选项,如BasicDataSource或C3P0。 - **3.3 配置SessionFactory**:配置Hibernate SessionFactory,指定Hibernate配置文件的位置以及其他必要的参数。 - **3.4 配置事务**:通过Spring的...

    一个用SSH实现的注册登录功能

    8. **性能优化**:为了提升系统性能,可以使用缓存技术(如Spring的Cache Abstraction)、连接池(如Apache DBCP或C3P0)以及合理的数据库设计。此外,还可以通过Struts2的拦截器进行性能监控和优化。 这个"shop...

    javaweb项目包含登录注册

    - **连接池**:为了提高性能和资源管理,通常使用连接池(如C3P0、Apache DBCP或HikariCP)来管理数据库连接。 5. **安全机制**: - **CSRF Token**:防止跨站请求伪造攻击,每个表单提交时应包含一个唯一的Token...

    数据库连接测试

    MyEclipse支持配置连接池,如C3P0、Apache DBCP或HikariCP,这些连接池组件可以帮助管理数据库连接的生命周期。 6. **异常处理和测试用例**:在开发过程中,还应编写测试用例来模拟各种异常情况,如网络中断、超时...

    java连接access的mdb文件

    不过,为了提高效率和可维护性,建议使用更现代的JDBC驱动,如Apache的DBCP或C3P0,以及ORM框架如Hibernate或MyBatis,它们提供了更好的性能和更方便的API。 总的来说,Java连接Access MDB文件涉及到JDBC接口、ODBC...

    springMVC配置连接数据库实现登录功能的一个小demo

    Spring MVC 是一个强大的Java Web开发框架,用于构建...数据源配置通常使用Apache的DBCP或C3P0,而SessionFactory配置则是为Hibernate提供数据库连接参数,如数据库URL、用户名、密码和驱动类名。 ```xml ...

    crm项目课堂笔记.docx

    - 配置C3P0连接池,定义数据库连接参数,如驱动类、URL、用户名和密码。 - 配置Hibernate相关属性,如方言、SQL显示、格式化SQL和自动更新数据库结构。 - 使用log4j.properties文件进行日志管理。 6. 事务管理:...

    java固定资产管理系统源代码

    - 数据库连接池如C3P0或Apache DBCP提高数据库连接效率。 5. **安全性**: - 使用HTTPS协议保证数据传输的安全。 - 权限控制:根据用户角色分配不同操作权限,防止未授权访问。 - 数据加密:敏感信息如密码应...

    SSH2 jar包

    7. **com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar** 和 **c3p0-0.9.1.jar**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,为数据库连接提供了自动管理,包括连接创建、测试和回收。 8. **...

    ssh连接两个数据库

    - `sqlDataSource`: 使用C3P0连接池配置SQL Server的数据源。 - `driverClass`: 数据库驱动类。 - `jdbcUrl`: 数据库URL。 - `user`: 用户名。 - `password`: 密码。 - `autoCommitOnClose`: 自动提交设置。 ...

    网上购物项目

    在这个项目中,采用C3P0数据库连接池技术,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。数据库连接池在多用户并发访问数据库时,可以显著提高性能,因为建立和释放...

    SSH整合笔记

    - 配置 SessionFactory,使用 c3p0 作为数据源; - DAO 类继承 HibernateDaoSupport; - 在 Spring 配置文件中配置 SessionFactory; - 测试 SessionFactory 功能; - 管理事务提交与回滚。 #### 二、学习方法 - *...

    初学JSP常用的几个jar包

    - C3P0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。它提供了一些高级功能,如自动测试连接、连接池的大小控制等,有助于提高数据库资源的利用率。 - DBCP (Apache ...

    ShardingSphere学习分享(一).pptx

    支持任何第三方的数据库连接池,如 DBCP、C3P0、BoneCP、Druid、HikariCP 等。 ShardingSphere-Proxy ShardingSphere-Proxy 是一个轻量级 Java 框架,在 Java 的 JDBC 层提供额外服务。它使用客户端直连数据库,以...

    Java数据库编程宝典

    因此,我们通常采用数据源(DataSource)和连接池(例如C3P0、Apache DBCP或HikariCP)来管理和复用数据库连接,提高系统性能。 6. ORM框架:Java中的Hibernate和MyBatis是流行的ORM(对象关系映射)框架,它们简化...

Global site tag (gtag.js) - Google Analytics