国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

spring 入門 3 整合JDBC和AOP事務

CHENGKANG / 456人閱讀

摘要:整合提供了很多模板整合技術持久化技術模板類中提供了一個可以操作數據庫的對象對象封裝了技術模板對象與中的非常相似準備連接池創建模板對象書寫并執行步驟導包基礎包類庫新增連接池驅動包包事務包準備數據庫本地數據庫和表書寫使用模板實現增刪改查

spring整合JDBC

spring提供了很多模板整合Dao技術

ORM持久化技術 模板類
JDBC org.springframework.Jdbc.core.JdbcTemplate
Hibernate3.0 org.springframework.orm.hiberate3.HibernateTemplate
IBatis(MyBatis) org.springframework.orm.sqlMapClientTemplate
JPA org.springframework.orm.jpa.JpaTemplate

spring中提供了一個可以操作數據庫的對象.對象封裝了jdbc技術.

// JDBCTemplate => JDBC模板對象
// 與DBUtils中的QueryRunner非常相似.
// 0 準備連接池
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///hibernate_32");
dataSource.setUser("root");
dataSource.setPassword("1234");
// 1 創建JDBC模板對象
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(dataSource);
// 2 書寫sql,并執行
String sql = "insert into t_user values(null,"rose") ";
jt.update(sql);

步驟
1.導包

基礎包4 + 2
spring-test
spring-aop
junit4類庫
新增c3p0連接池JDBC驅動包
spring-jdbc包
spring-tx事務包

2.準備數據庫

本地數據庫和表

3.書寫dao

// 使用JDBC模板實現增刪改查
public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
    @Override
    public void save(User u) {
        String sql = "insert into t_user values(null,?) ";
        super.getJdbcTemplate().update(sql, u.getName());
    }
    @Override
    public void delete(Integer id) {
        String sql = "delete from t_user where id = ? ";
        super.getJdbcTemplate().update(sql,id);
    }
    @Override
    public void update(User u) {
        String sql = "update  t_user set name = ? where id=? ";
        super.getJdbcTemplate().update(sql, u.getName(),u.getId());
    }
    @Override
    public User getById(Integer id) {
        String sql = "select * from t_user where id = ? ";
        return super.getJdbcTemplate().queryForObject(sql,new RowMapper(){
            @Override
            public User mapRow(ResultSet rs, int arg1) throws SQLException {
                User u = new User();
                u.setId(rs.getInt("id"));
                u.setName(rs.getString("name"));
                return u;
            }}, id);
        
    }
    @Override
    public int getTotalCount() {
        String sql = "select count(*) from t_user  ";
        Integer count = super.getJdbcTemplate().queryForObject(sql, Integer.class);
        return count;
    }

    @Override
    public List getAll() {
        String sql = "select * from t_user  ";
        List list = super.getJdbcTemplate().query(sql, new RowMapper(){
            @Override
            public User mapRow(ResultSet rs, int arg1) throws SQLException {
                User u = new User();
                u.setId(rs.getInt("id"));
                u.setName(rs.getString("name"));
                return u;
            }});
        return list;
    }
}

4.spring配置






    
    
    
    





    




    


// 若UserDao類繼承了JdbcDaoSupport,則無需將JDBCTemplate注入到容器中,省略第二步,第三步改為
 

    
spring中aop事務

事務
事務特性:acid
事務并發問題:臟讀、不可重復讀、幻讀
事務的隔離級別:1 讀未提交、2 讀已提交、4 可重復讀、8 串行化
spring封裝了事務管理代碼
事務操作:1、打開事務、2、提交事務、3、回滾事務
事務操作對象
因為在不同平臺,操作事務的代碼各不相同.spring提供了一個接口
PlatformTransactionManager 接口

DataSourceTransactionManager
HibernateTransitionmanager
注意:在spring中玩事務管理.最為核心的對象就是TransactionManager對象

spring管理事務的屬性介紹
事務的隔離級別:1 讀未提交、2 讀已提交、4 可重復讀、8 串行化
是否只讀: true只讀 false可操作
事務的傳播行為:決定業務方法之間調用,事務應該如何處理

* 保證同一個事務中
PROPAGATION_REQUIRED 支持當前事務,如果不存在 就新建一個(默認、推薦99.99%用這種)
PROPAGATION_SUPPORTS 支持當前事務,如果不存在,就不使用事務
PROPAGATION_MANDATORY 支持當前事務,如果不存在,拋出異常
* 保證沒有在同一個事務中
PROPAGATION_REQUIRES_NEW 如果有事務存在,掛起當前事務,創建一個新的事務
PROPAGATION_NOT_SUPPORTED 以非事務方式運行,如果有事務存在,掛起當前事務
PROPAGATION_NEVER 以非事務方式運行,如果有事務存在,拋出異常
PROPAGATION_NESTED 如果當前事務存在,則嵌套事務執行

spring管理事務方式

// 編碼式
// 1.將核心事務管理器配置到spring容器


    

// 2.配置TransactionTemplate模板


        

// 3.將事務模板注入Service


    
    
    

xml配置(aop)

  // 1.導包
  // aop、aspect、aopliance、aspect.weaver
  // 2.導入新的約束(tx)
  // beans: 最基本、context:讀取properties配置、aop:配置aop、tx:配置事務通知
  // 3.配置通知
  

    
        
        
        
        
        
        
        
        
        
        
    

// 4.配置將通知織入目標


    
    
    
    

注解配置(aop)

// 1.導包(如xml配置一樣)
// 2.導入約束(同上)
// 3.開啟注解管理事務


// 4.使用注解
@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public class AccountServiceImpl implements AccountService {

@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)
public void transfer(final Integer from,final Integer to,final Double money) {

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76564.html

相關文章

  • Spring筆記04_AOP注解開發_模板_事務

    摘要:后置增強周杰倫環繞通知在切面類中添加以下方法環繞通知環繞前增強環繞前增強測試前置增強保存訂單。。。不使用事務管理。 1. Spring基于AspectJ的注解的AOP開發 1. 1 SpringAOP的注解入門 創建項目,導入jar包 需要導入Spring基礎包4+2 需要導入AOP聯盟包、AspectJ包、Spring整合Aspect包Spring-aop包 Spring整合單...

    youkede 評論0 收藏0
  • Spring學習筆記

    摘要:介紹并不局限于某一層是對象的容器幫我們管理項目中的所有對象搭建導包直接新建項目,一般的都有,除了依賴準備類書寫配置書寫代碼測試中的概念反轉控制創建對象的方式反轉了從我們自己創建對象反轉給程序來創建依賴注入將必須的屬性注入到對象當中是實現思想 1.spring介紹 spring并不局限于某一層.spring是對象的容器,幫我們管理項目中的所有對象 2.spring搭建 1.導包(idea...

    FleyX 評論0 收藏0
  • Java3y文章目錄導航

    摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...

    KevinYan 評論0 收藏0
  • ssh(Spring+Struts2+hibernate)整合

    摘要:需求整合框架做一個保存用戶的業務,業務比較簡單,重在框架整合。 需求:整合ssh框架做一個保存用戶的業務,業務比較簡單,重在ssh框架整合。創建數據庫和表 CREATE DATABASE ssh01; USE DATABASE; 表由Hibernate創建,可以看配置是否成功 一:導入jar包 Hibernate需要jar Hibernate基本jar mysql驅動 ...

    tulayang 評論0 收藏0
  • 慕課網_《Spring入門篇》學習總結

    摘要:入門篇學習總結時間年月日星期三說明本文部分內容均來自慕課網。主要的功能是日志記錄,性能統計,安全控制,事務處理,異常處理等等。 《Spring入門篇》學習總結 時間:2017年1月18日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://git...

    Ververica 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<