Java

DBアクセス時の共通処理の実装

DBアクセス時に共通化したい処理はいくつかあるが、まずは、"INSERT時に更新日時をセットする"という単純なものをS2JDBCで作ってみた。 (以下の記事を非常に参考にさせていただきました。) S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ テーブル…

指定されたテーブルのデータを、指定された件数だけ取得

ResultSetMetaDataを使用して作成。 指定された開始位置から終了位置までの、テーブルデータを取得する。 public List getRecordData(String tableName, int startIndex, int endIndex, Connection con) throws SQLException { List recordList = new ArrayL…

指定されたテーブルのCREATE文を生成する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定されたテーブルのCREATE文を生成する。 少し手抜きなので、基本的な型しかうまくいかない。 public void outputCreateTableSql(String tableName, Connection con) throws SQLException…

DatabaseMetaData指定されたテーブルのカラム名を取得する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定されたテーブルのカラム名を取得する。 private List getColumnNameList(String tableName, Connection con) throws SQLException { List columnNameList = new ArrayList(); DatabaseM…

データベースからテーブル一覧を取得する

DatabaseMetaDataを使用して作成。 接続しているデータベースから、指定された条件に部分一致するテーブル名称を取得する。条件がブランクなら、全てのテーブルを取得する。 public List getTableNameList(String tableName, Connection con) throws SQLExce…

AxisでWebサービス

今更Webサービスもなんですが、一度もさわったことがなかったので少し勉強してみました。 環境構築 まずは、環境構築。 JDK 1.5 tomcat 5.0.28 axis 1.2 JDKとtomcatのインストール方法は省くとして、axisだけ簡単に。 axisをダウンロードして解凍 解凍したa…

splitメソッドの仕様

Stringのsplitに悩まされた。splitメソッドは文字列を指定した文字で分割し、配列にしてくれる。 String csv = "1,2,3"; String[] arrayCsv = csv.split(","); // arrayCsv = {1,2,3}となる。 上記のような場合は問題ないが、最後の値がブランクの場合に意図…

Eclipse Plugin Visual Editorメモ

Swingでちょっとしたツールを作りたくなったので、今更だがVisual Editorを使ってみた。昔使ったときは、重くてつかいもんなんねーと思ったが今のPC(メモリ1.5GB)ならさくさくだった。今後のために、はまったところをメモ。 インストールは、Eclipse.org…

SSHって何のことかと思ったら

最近、Java界隈のブログで「SSH」という単語をよくみる。まさか、いまさらUNIXへセキュアへログインする技術の話をしてるわけがないと、色々調べてみたら「Struts+Spring+Hibernate」のことっぽい。ややこしいので呼び方変えたほうがいいような。

JavaでXMLの解析

JavaでXMLの解析って使う機会は多そうだが、今まで使った事がなかったので勉強してみた。 解析に使うAPIは2つある。 DOM (Document Object Model) SAX (Simple API for XML) これらはJDK1.4以上なら、含まれているので特にライブラリは必要なし。比較すると…

StrutsのAction Chain 

StrutsのAction Chainってあんまり好きじゃないけどログインとデフォルトページを表示するような 処理には使ったほうがすっきりする。使ってみよ。

DBFluteを使ってみた。

DBFluteは前から名前は知っていたが、S2Daoで満足しているのであんまり気にとめてなかった。 が、カンファレンス行った人の多くのブログで好評なのでいよいよ使ってみた。 0.概要を知る ドキュメントを読んでみたが、完全に位置づけが理解できていない。 S…

SQL_FILEアノテーション

長らく家でS2Daoは触ってなかったが、今回リリースされたバージョンで SQLファイル不備を検出するための機能が追加されたので使ってみた。 (前にファイル名が微妙に違っていて、本番導入時に気づいたってことがあったので。)使い方は簡単。SQLファイル利用す…

Seasar導入のメリットは?

社内ではまだまだSeasarの利用案件がすくないので、私が導入を進める立場にいる。 そのときにメリット(魅力?)としてあげるのは以下の2点 S2DAOの魅力(SQL自動生成・SQL外だし) AOPの魅力よるログ・トランザクション管理 いわゆるDIのメリットは全く説明…

TomcatからのDB2接続

tomcatからDB2へ接続するデータソースの作成でかなりつまづいた。 データソースの設定は、他のRDBMSとかと同じだから簡単にできた。けど、ドライバダウンロードエラーが発生。 ああ、はいはい。と思って$CATALINA_HOME/common/libにドライバをコピー。それで…

Eclipse Tomcat Pluginでのデータソース設定方法

Webで探しても意外とちゃんと書いてるサイトがなかったのでここでメモ。*1まず、コンテキスト宣言モードの確認。[ウィンドウ]-[設定]-[Tomcat] でコンテキスト宣言モードを確認する。このモードによってデータソースの指定を書く場所が異なる。 Server.xmlの…

S2Unitをそろそろ

SQL*PLUSやObject Browser片手に単体テストするのも、面倒くさいってレベルじゃねえぞ、って感じなのでそろそろS2Unitを使ってみようと思う。何からはじめたらいいかわからないけど、ドキュメントを軽く見たらデータベースの内容をExcelに簡単に出力できるら…

Seasar経由でのSessionへの登録と取得と削除

http://d.hatena.ne.jp/authorNari/20070202今までよくわかってなかったけど、id:authorNariさんが書いてくれたやりかたで、Sessionへの登録・取得は簡単にできました。Sessionからの削除はメソッドに @RemoveSession(name="aaaDto") といったアノテーション…

StrutsでAjax

仕事でちょっとAjax使うことになったのでサンプル作成。 Strutsを利用しているので、クライアント側のURLにActionクラスを指定して、Action側のメソッドはnullを返すようにしただけでうまくいった。 もうちょっとまともなの作ったらサンプルソース乗せます。

ServletRequest getAttributeとgetParameterの違い

この2つのメソッドの違いを整理。理解していないことが原因で、はまったことがあったので。 getAttribute リクエストから属性を取得するときに使用。Servlet - JSP間で値を受け渡すときに主に使用。Tomcatなどのコンテナに値がセットされるという感じかな。…

舞姫がうまく動かない場合の処置

Tomcatの起動を早くするためのEclipseプラグイン「舞姫」を使っているが、なぜかコンテキストの対象外にするためにチェックボックスをはずそうとしても、特定のプロジェクトだけチェックがOFFにできない現象が発生していた。調べてみると${TOMCAT.HOME}\conf…

S2JSFサンプルのHotDeploy対応

いよいよs2-jsf-example-1.1.1を拡張して色々試すかーって思ったけど、このサンプルHotDeploy対応されてないのでまずこれに対応。 まずweb.xmlにhotdeployの定義を追加 hotdeployfilter org.seasar.framework.container.hotdeploy.HotdeployFilter hotdeploy…

そろそろS2JSFの勉強でも

いつまでもJSPとか使ってられないので、そろそろS2JSFでも勉強しようかなっていろいろ情報集めてたら、なんかTeedaとかいうのがあって、これもJSFの実装らしくて(JSFの実装の意味がよくわかってないが)、この中のTeeda ExtensionというはS2JSFの進化らしい…

S2Daoメタデータの取得処理解析2

去年の続き。どうすればaddColumnsメソッドの呼び出しがを1度だけで済ませられるかについてメモ。 addColumns(dbMetaData, convertIdentifier(dbMetaData, schema), convertedTableName,map); addColumns(dbMetaData, schema, tableName, map); addColumns(…

S2Daoメタデータの取得処理解析

1ヶ月ぐらい前の記事で書いた、S2Daoのメタデータ取得に時間がかかる処理を解析してみた。 時間がかかるのは、1回目のアクセスでそれ以降はキャッシュされるから実運用では問題ないけど、開発中の1回目のアクセスが絶えられなく なってきたので解析。細かく…

S2Pager使ってみました。

ページ機能はどのシステムでも使うし、自分で作るのがいつもだるかったので非常に助かる。ただ、いきなりdiconファイルの設定でつまづいた。 サンプルはS2.3で今使ってるのがS2.4なのでどのファイルをいじるのよくわからなかったが、まあ適当にdao.dicoをい…

S2Daoでメタデータの取得に時間がかかる

S2Dao使っているけど1回目の論理的なコネクションの取得で異様にかかる。 DEBUG 2006-11-29 01:11:32,078 [main] 物理的なコネクションを取得しました DEBUG 2006-11-29 01:11:32,078 [main] 論理的なコネクションを取得しました DEBUG 2006-11-29 01:11:35…

Seasar2.4使い始めました。

S2.3でしたがとうとうS2.4に移行しました。とりあえずHOT deployよすぎ。かなりさくさく開発できる。 S2.3からの移行時に苦労するかなって思ったけど、意外とすんなりいった。つまずいたところまとめると、 app.diconのDOCTYPEを書き換え忘れ。 jdbc.diconを…

サーブレットのフィルターで特定のサーブレットのみ除く方法

ユーザがログイン済みかどうか確かめる方法として、ログイン時にセッションにユーザ情報を保存して各画面呼び出し時にセッションを確認する。という方法がよく使われる。それを実現するためにJavaでは私はフィルターをよくつかっている。 ただ、ログイン前の…

続・詳細設計について

前にもかいたけど、Javaで開発しているとやっぱり詳細設計悩む。今は擬似言語つかって各イベントの処理をずらずらって書いてるだけ。 例えばこのブログ左部分の検索機能だったら 画面からの入力パラメータを受け取る。→パラメータ名と内容を書く。 入力チェ…