zoukankan      html  css  js  c++  java
  • spring_5处理数据库

    spring 使用JDBC

    spring利用spring中的JdbcTemplate对象操作数据库
    从Ioc容器中获取JdbcTemplate对象实例,通过调用JdbcTemplate对象的相应的insert,update,delete,query方法实现数据库操作

    基于配置xml的spring Jdbc
    1. 写一个实体类
    2. 写一个dao层类,针对实体类的持久化操作。在类中定义一个JdbcTemplate成员变量,通过setJdbcTemplate()方法来装配bean的JdbcTemplate属性。类的方法通过JdbcTemplate的引用变量进行数据库操作,并返回相应结果集
    3. 写一个测试类,调用dao层的方法
    4. spring的配置文件applicationContext.xml中的配置
        <!-- 导入资源文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
        
        <!-- 配置c3p0数据源 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="${jdbc.user}"></property>
            <property name="password" value="${jdbc.password}"></property>
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
            <property name="driverClass" value="${jdbc.driverClass}"></property>
            
            <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
            <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
        </bean>
        
        <!-- 配置相应的bean -->
        <bean id="employeeDao" ...>
            <property name="jdbcTempalte" ref="jdbcTemplate">
        </bean>
    
        <!-- 配置 spring 的 Jdbc Template -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>  
    
    基于注解的Spring Jdbc
    1. 写一个实体类
    2. 写一个dao层的类,针对实体类的持久化操作,添加@Repository注解。在类中定义一个JdbcTemplate成员变量,并添加@Autowire注解,自动装配bean的JdbcTemplate属性。类的方法通过JdbcTemplate的引用变量进行数据库操作,并返回相应结果集
    3. 写一个测试类,只需调用dao层的方法进行相应的持久化操作
    4. spring的配置文件applicationContext.xml中的配置
    <!-- 自动扫描包 -->
        <context:component-scan base-package="jdbcByZhujie"></context:component-scan>
        <!-- 导入资源文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
        
        <!-- 配置c3p0数据源 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="${jdbc.user}"></property>
            <property name="password" value="${jdbc.password}"></property>
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
            <property name="driverClass" value="${jdbc.driverClass}"></property>
            
            <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
            <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
        </bean>
        
        <!-- 配置 spring 的 Jdbc Template -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>  
    

    spring事务

    • 事务的使用
      一般在service层的方法上使用事务,在方法上添加事务注解或者通过配置文件配置
      当测试类调用service层的一个方法时,他需要调用dao层多个方法(数据库的操作)。当某个方法出现异常时可以回滚到开始的状态。
    • spring中设置事务的属性
      1.指定事务的传播行为,使用propagation ,即当前事务方法被另外一个事务方法调用时,如何使用事务
      默认值REQUIRE,使用调用方法的事务
      REQUIRE_NEW使用自己的事务,调用的事务方法的事务被挂起。
      2.指定事务的隔离级别,通过设置isolation属性,最常用的取值为READ_COMMITTED
      3.指定对那些异常不进行回滚。通过设置noRollbackFor属性,默认情况Spring的声明式事务对所有异常进行回滚,通常使用默认值
      4.事务的只读属性,使用readOnly指定事务事务为只读,表示这个事务只读取数据不更新数据
      5.事务的占用时间,使用timeout指定强制回滚之前事务可以占用的时间
    基于注解的Spring 事务(Spring声明式事务)
    1. 写相应的实体类
    2. 写相应的dao层,通过注解的方式进行持久化操作
    3. 写service层,在这里添加事务注解@Transactional()可以配置事务的属性
    4. 在spring配置文件applicationContext.xml添加的配置
        <!-- 配置事务管理器 -->
        <bean id="transactionManager" 
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 启用事务注解 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>  
    

    配置事务属性

    @Transactional(propagation=Propagation.REQUIRED
                ,isolation=Isolation.READ_COMMITTED
                ,noRollbackFor={UserAccountException.class}
                ,readOnly=true
                ,timeout=3)  
    
    基于配置XML的Spring 事务
    1. 写相应的实体类
    2. 写相应的dao层的类,通过配置xml的方法装配bean。即要写setJdbcTemplate()方法来获取实例
    3. 写service层的类(通过配置spring文件在该类中方法上添加事务)
    4. 在spring配置文件applicationContext.xml添加的配置
        <!-- 1.配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 2.配置事务切入点,以及把事务切入点和事务关联起来(相当于在service层方法上添加注解) -->
        <aop:config>
            <aop:pointcut expression="execution(* txByXml.serviceImpl.*.*(..))" id="txPointCut"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
        </aop:config> 
        <!-- 3.配置事务属性(相当于在注解@Transaction()中配置属性) -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="purchase" propagation="REQUIRED"/>
                <tx:method name="get*" read-only="true"/>
                <tx:method name="find*" read-only="true"/>
                <tx:method name="*"/>
            </tx:attributes>
        </tx:advice>
    
  • 相关阅读:
    @synthesize 有什么好处?
    javascript isNaN
    nodejs 与 mysql联接
    SQL SERVER 2008 架构
    sql server 2008 索引
    sql server 2008 (3)
    sql server 2008 (1)(2)
    c# 中的 Trim
    无法将该规则转化为等效的IIS格式,因为有不支持的标记:E
    如何解决近期微赞或微擎有些模块提示不是官方安装的解决办法
  • 原文地址:https://www.cnblogs.com/TaogenJia/p/5468654.html
Copyright © 2011-2022 走看看