Spring使用

--------------=======Spring 使用技巧========-------------------
1.在SSH中的DAO中执行SQL
//申请变量
Connection conn = null;
PreparementStatement ps = null;
ResultSet rs = null;
//通过this.getSession()取得Session;
Session session = this.getSession();
conn = session.connection();

...(正常执行SQL,使用方法和JDBC使用方法一致)

//释放session,不执行这一步,执行几次后系统链接池满,系统查询不再响应;(非常重要)
releaseSession(session);
//断开链接
ConnectOracleBase.closeAllConnection(rs, ps, conn);

--注意在Hibernate和DAO,通过session得到connection一定要注意,使用releaseSession(session)
释放session资源,否则链接池满,操作无法响应;

一定要配合使用:
Session session = this.getSession();
...
releaseSession(session);

2.在Hibernate或者Dao中通过Session获取Connection的方法:

2.1 通过this.getHibernateTemplate().getSessionFactory().openSession();
Session session = this.getSession();
conn = session.connection();
 ...
releaseSession(session);
 
2.2 通过this.getSession();
Session session = this.getSession();
conn = session.connection();
 ...
releaseSession(session);
注意:一定要使用releaseSession(session);释放session资源,否则出现多次查询,页面无响应情况;
通常使用releaseSession(org.hibernate.Session)方法与getSession()配合。

3.Spring JDBC支持
3.1 在Spring文件中添加ds(数据源)
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="oracle.jdbc.driver.OracleDriver">
  </property>
  <property name="url"
   value="jdbc:oracle:thin:@localhost:1521:kevinb">
  </property>
  <property name="username" value="scott"></property>
  <property name="password" value="tiger"></property>
 </bean>

3.2 定义Bean

3.3 实现Dao
3.3.1 配置Spring applicationContext.xml中的业务实现类,规定了初始化方法(构造方式无效);
<bean id="UserImpl" class="com.kevinb.dao.UserImpl" init-method="init">
  <property name="ds" ref="ds"></property>
</bean>

3.3.1 初始化JdbcTemplate jt = null;

private JdbcTemplate jt;
private DataSource ds;
public void init(){
  jt = new JdbcTemplate(ds);
 }

3.3.2 add or delete or update
jt.update(sql, new PreparedStatementSetter() {
   public void setValues(PreparedStatement ps) throws SQLException {
    ps.setInt(1, userId);
    ps.setString(2, userName);
   }
    }
);

3.3.3 view
jt.query(sql, new RowCallbackHandler(){
   public void processRow(ResultSet rs) throws SQLException {
    User user = new User();
    user.setUserId(rs.getInt("user_id"));
    user.setUserName(rs.getString("user_name"));
    user.setPassword(rs.getString("password"));
    list.add(user);
   }
  }
  );


4.Spring事务管理
4.1 在Spring配置文件中配置如下:
<!-- 添加数据源ds -->
    <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="oracle.jdbc.driver.OracleDriver">
  </property>
  <property name="url"
   value="jdbc:oracle:thin:@localhost:1521:orcl">
  </property>
  <property name="username" value="scott"></property>
  <property name="password" value="ffffff"></property>
 </bean>
 <!-- 添加实现类 -->
    <bean id="UserDaoImpl" class="com.kevinb.dao.UserDaoImpl" init-method="init">
     <property name="ds" ref="ds"></property>
    </bean>
    <!-- 添加数据源事务管理 -->
    <bean id="DataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="dataSource" ref="ds"></property>
    </bean>
    <!-- 配置事务AOP -->
    <bean id="UserDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     <property name="transactionManager" ref="DataSourceTransactionManager"></property>
     <property name="target" ref="UserDaoImpl"></property>
     <property name="transactionAttributes">
      <props>
       <prop key="insert*">PROPAGATION_REQUIRED</prop> <!-- 注意insert和*之间没有空格,如果有不能达到事务左右 -->
       <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
      </props>
     </property>
    </bean>

4.2 DaoImpl
需要添加ds,jt,transactionManager(PlatformTransactionManager,需要get set方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值