2011/03/31

[Java] SpringFrameworkのトランザクション管理について

概要

SpringFrameworkのトランザクション管理の方法について説明します。

動作環境

項目内容
OSMac OS X 10.06
DBMySQL 5.5
開発環境eclipse3.6
SpringFramework1.2
iBatis2.0

前提事項

・特になし

内容

Springでは、トランザクション管理に以下のクラスを使用するようです。
org.springframework.transaction.interceptor.TransactionProxyFactoryBean

こちらをapplicationContext.xmlに定義します。
こんな感じで実装しました。
  
      
        
      
      
        
      
      
        
          PROPAGATION_REQUIRED
        
      
  

重要なのは、上記の「transactionAttributes」です。
prop keyで指定するメソッドにて、トランザクションの状態を定義するようです。
この例だと、すべてのメソッドを同じようにトランザクション管理するという内容になります。

テスト

なし

参考情報


最後に

次回以降は、Swing+SpringFramework+iBatisを組み合わせたアプリケーションを作成します。

2011/03/30

[Java] SpringFrameworkとiBatisを連携させてみる

概要

今更ながら、SpringFrameworkとiBatisを連携を試してみます。
applicationContextの設定から、sqlMapの設定、テストまでを大まかに説明します。

動作環境

項目内容
OSMac OS X 10.06
DBMySQL 5.5
開発環境eclipse3.6
SpringFramework1.2
iBatis2.0

前提事項

・以下のテーブルを作成していること。
CREATE  TABLE `PERSON` (
  `PER_ID` INT NOT NULL ,
  `PER_FIRST_NAME` VARCHAR(40) NOT NULL ,
  `PER_LAST_NAME` VARCHAR(40) NOT NULL ,
  PRIMARY KEY (`PER_ID`) )
ENGINE = InnoDB;
・mysqlのJDBCドライバを入手済であること。

内容


1.SpringFrameworkのライブラリを入手する。
現時点の最新バージョンは3.0.5ですが、今回は1.2系のライブラリを入手します。
以下のURLより入手できますので、入手し適当な場所に解凍して下さい。
こちら

2.iBatisのライブラリを入手する。
現時点では「iBatis」と言う名前から「MyBatis」という名前に変更になっています。
入手についてはこちらを参考にして下さい。

3.Springの定義ファイルを作成する。

Springの定義ファイル「applicationContext-ibatis.xml」を作成します。
このファイルでは、
 ・データソースの設定
 ・iBatis設定ファイルの設定
 ・Daoに対してデータソースの設定
を行っています。



  
  
      
        com.mysql.jdbc.Driver
      
      
        jdbc:mysql://localhost/ibatis
      
      
        ibatis
      
      
        ibatis
      
  

  
      
        
      
  

  
      
        
          dao/sqlMapConfig.xml
        
      
  

  
      
        
      
      
        
      
  

  


4.iBatisの定義ファイルを作成する。

iBatisで使用する定義ファイル「sqlMapConfig.xml」を以下のように作成しました。




  


5.O/Rマッピングファイルを作成する。

O/Rマッピングファイル「PersonDao.xml」を以下のように作成しました。




  
  

上記は見ての通り、SQLです。
Hibernateだと、確かかけないんです。SQLを。
iBatisだとSQLを書けるのでSQLを良く使用しているエンジニアだと取っ付きやすいと思います。

6.DTOを作成する。
DBからの取得した結果を格納するためのDTOを作成します。
以下のようなクラスを作成しました。
public class Person {

 private int id;
 private String firstName;
 private String lastName;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getFirstName() {
  return firstName;
 }
 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
}

7.Daoクラスを作成する。

今回の例では、インタフェースとその実装クラスそれぞれを作成しました。

・PersonDao
public interface PersonDao {
 public List selectAll();
}
・PersonDaoImpl
public class PersonDaoImpl extends SqlMapClientDaoSupport implements PersonDao {

 @Override
 public List selectAll() {
  return (List) getSqlMapClientTemplate().queryForList("selectAll");
 }
}


テスト

1〜7で使用する準備が整ったので、実際に使用できるか試してみます。
public class StartUp {

 public static void main(String[] args) {

  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-ibatis.xml");
  BeanFactory factory = (BeanFactory) context;
  PersonDao dao = (PersonDao) factory.getBean("personDao");
  List personList = dao.selectAll();
  System.out.println(personList.size());
 }
}

実行すると、以下のような感じでログが表示されました。
正常に連携できました。
2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext prepareRefresh
情報: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@39617189: display name [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]; startup date [Wed Mar 30 22:42:27 JST 2011]; root of context hierarchy
2011/03/30 22:42:27 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
情報: Loading XML bean definitions from class path resource [applicationContext-ibatis.xml]
2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
情報: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]: org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7
2011/03/30 22:42:27 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
情報: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7: defining beans [dataSource,transactionManager,sqlMapClient,personDao]; root of factory hierarchy
2011/03/30 22:42:27 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
情報: Loaded JDBC driver: com.mysql.jdbc.Driver
1

参考情報

なし

最後に

説明をほとんどしませんでしたが、上記の内容をおのおのの環境に合わせて使って貰えれば動作すると思います。
次回以降、トランザクションに関して試してみたいと思います。

[Ubuntu] 起動時に共有フォルダをマウントする方法について

概要

Ubuntu起動時に共有フォルダをマウントする方法について説明します。


動作環境

項目内容
OSUbuntu10.04

前提事項

・マウント先がWindowsであること

内容

mountを定義しているファイルは「/etc/fstab」です。
こちらを編集して、Ubuntu起動時にマウントされるようにします。

1.fstabを編集する。

fstabファイルの末尾に以下の内容を追記します。
/マウント相手のIPアドレス/マウントしたいフォルダ名
 マウント先 smbfs username=相手先のユーザー名,password=相手先ユーザーのパスワード,
gid=相ファイルシステムのグループID,uid=ファイルシステムのユーザID,
codepage=cp932,iocharset=utf8,rw,defaults 0 0
これらを1行で記述します。

項目の詳細な内容は以下の通りです。
項目内容
マウント相手のIPアドレスマウント先のファイルサーバのIPアドレスを指定する。
マウントしたいフォルダ名マウント先のフォルダ名を指定する。
マウント先マウントしたいディレクトリを指定する。
相手先のユーザー名WindowsのユーザーID
相手先ユーザーのパスワードWindowsのパスワード
ファイルシステムのグループIDマウントするUbuntuユーザーの属するグループIDを指定する。
ファイルシステムのユーザIDマウントするUbuntuユーザーIDを指定する。
複数のマウント先がある場合、上記の内容を追記します。

2.Ubuntuを再起動する
設定が終わったら、再起動します。

3.テストする
うまくマウントできているか、確認します。

テスト

なし

参考情報

fstabにsmbfsの自動mountを定義
ファイルシステムのマウントとアンマウント、「/etc/fstab」がキモ

2011/03/29

[Windows Storage Server] Guestユーザーを有効にする方法について

概要

Windows Storage Server2008で作成した共有領域に、パスワードなしでアクセスする方法を紹介します。

動作環境

項目内容
OSWindows Storage Server2008

前提事項

なし

内容

アクセス可能な領域にアクセスすると、Guestユーザとして扱われます。
通常、Guestユーザでアクセス可能な領域にアクセスはできないため、
ユーザー認証するための確認ダイアログが表示されます。

その確認ダイアログを表示しないようにするためには、Guestユーザを有効とするように設定変更します。
以下、設定変更の仕方について説明します。
1.ローカルセキュリティポリシーを開く。
「コントロールパネル」-「管理ツール」-「ローカルセキュリティポリシー」

2.「セキュリティオプション」を選択する。
左側のツリーで、「セキュリティの設定」-「ローカルポリシー」-「セキュリティオプション」を選択します。

3.Guestアカウントの有効化する。
右側のリストで、「アカウント: Guest アカウントの状態」を「有効」にします。

テスト

なし

参考情報

Windows Server 2003の共有フォルダ

2011/03/28

[Java] iBatisの入手方法について

概要

iBatisのライブラリの入手方法について説明します。
本当はMyBatisに関して書きたかったのですが、現時点ではSpringFrameworkと連携できなさそうなので、iBatisについて書きます。

動作環境

項目内容
OSMac OS X 10.06
JavaJDK6
iBatis2.3.4
DBMySQL 5.5

前提事項

なし

内容

iBatisは現在「MyBatis」という名前に変わりライブラリの入手が困難になったようです。
MyBatisだと、SpringFrameworkと連携できないようなので、iBatisにはまだ需要があると思うのですが、、、。

iBatis2は以下のページから入手可能です。
そのうちページが見れなくなるかも知れません。
その頃には、SpringFrameworkと連携できるようになっているかもしれませんね。
こちら

テスト

なし

参考情報

[Java][iBATIS][mybatis]iBATIS2/iBATIS3/mybatis各種アーカイブ・ドキュメント一覧

[CentOS] インストールされたパッケージを確認する方法について

概要

インストールされたパッケージを確認する方法について説明します。

動作環境

なし

前提事項

なし

内容

インストールされているパッケージを確認するには、以下のコマンドを実行します。
rpm -qa

テスト

なし

参考情報

rpm -qa | grep httpd

[CentOS] OSバージョンを確認する方法について

概要

OSのバージョン情報を確認する方法について説明します。

動作環境

なし

前提事項

なし

内容

CentOSのバージョン情報を確認するには、ファイルをcatコマンド等で表示させます。
cat /etc/redhat-release

テスト

なし

参考情報

CentOSのバージョン確認