FrontPage > Spring Web MVCの覚書 > データーベースアクセス > iBATIS

トランザクション

1. TransactionManager登録

  • サーブレット設定ファイル(servlet-context.xml等)にtxManagerを記述。
    例)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:util="http://www.springframework.org/schema/util"
    	xsi:schemaLocation="
    		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
    
    ・・・略
    	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    	<tx:annotation-driven transaction-manager="txManager"/>
    </beans>

2. サービスクラス

  • Serviceインターフェースを作成する。
    例)
    package org.springframework.samples.mvc.basic.sample.service;
    
    import org.springframework.samples.mvc.basic.sample.entity.Emp;
    
    public interface EmpService {
    	Emp findByPrimaryKey(Integer id);
    }
  • Serviceクラスを作成する。
    例)
    package org.springframework.samples.mvc.basic.sample.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.samples.mvc.basic.sample.dao.EmpDAO;
    import org.springframework.samples.mvc.basic.sample.entity.Emp;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    @Service
    public class EmpServiceImpl implements EmpService {
    	@Autowired
    	private EmpDAO empDAO;
    
    	@Transactional(readOnly=true)
    	public Emp findByPrimaryKey(Integer id) {
    		return empDAO.selectByPrimaryKey(id);
    	}
    
    }

3. サンプル

  • Controllerクラス
    例)
    package org.springframework.samples.mvc.basic.sample;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.samples.mvc.basic.sample.entity.Emp;
    import org.springframework.samples.mvc.basic.sample.service.EmpService;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    public class EmpController {
    
    	@Autowired
    	private EmpService empService;
    
    	@RequestMapping(value="/emp/{userId}")
    	public String showForm(@PathVariable("userId") Integer userId, Model model) {
    		Emp emp = empService.findByPrimaryKey(userId);
    		model.addAttribute("emp", emp);
    		return "sample/emp";
    	}
    }
  • jsp
    例) WEB-INF/views/sample/emp.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <div class="content">
     <h1>${emp.userName}</h1>
    </div>

  • テーブルemp
    spring31.png
  • 実行結果
    spring30.png





添付ファイル: filespring31.png 374件 [詳細] filespring30.png 354件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-09-10 (月) 16:57:04 (2226d)