タグ

JavaとS2JDBCに関するbigbroのブックマーク (32)

  • 繰り返し項目の実装はDtoとEntityのどちらを使うべきか? - 出羽ブログ

    『複数レコード処理(繰り返し)』の場合に、Entityをそのまま使うというのに違和感を感じてしまうのですが、そんな感覚にはこだわらない方が良いのでしょうか。 導出項目を得るような処理というのはプレゼンテーションロジックなのだから、DTOに値をコピーして、DTOのgetterで実装するようにした方が良いような気がしてしまっているのですが。 私の以前のエントリでは、繰り返し更新がなければDtoのではなく、Entityを積極的に使うことを書きました。でもDtoを使うケースでも特に問題ないと思います。ただし、メリット・デメリットは、把握しておいた方がいいと思います。 【メリット】 繰り返し処理には、常にDtoを使うため、設計に一貫性がでる。実装者も迷わない。 【デメリット】 プレゼンテーションモデル側で導出項目のロジックを用意すると重複しやすい。 繰り返し更新が必要となるケースは比較的少ない状況に

    繰り返し項目の実装はDtoとEntityのどちらを使うべきか? - 出羽ブログ
  • SAStruts + S2JDBCのアーキテクチャを図示してみる - 出羽ブログ

    SAStruts と S2JDBC を使って少し複雑なケースのWebアプリを開発する際において、現時点で自分が一番良いと考えているアーキテクチャを図示してみました。 なかなか良い感じです。あえて、課題をあげるならば、次の2点です。 アクションフォームの内部クラスに @Component(instance = InstanceType.SESSION) を付けて、スコープをセッションにしたいができないこと(やり方が分からないだけだと思う。)←できないことが判明しました ユースケースをまたいでアクションフォームを使用しない方針とした場合、検証メソッドをアクションフォームに書きたくなるが現状ではアクションにしか書けないこと。 追記: 1.0.3-rc1 より検証メソッドはアクションフォームに書くことができるようになります。 よって、検証メソッドはアクションからアクションフォームへ移すことをオスス

    SAStruts + S2JDBCのアーキテクチャを図示してみる - 出羽ブログ
  • はじめてのSAStruts 6週目 - 130単位

    はじめてのSAStruts 5週目 - 130単位 の続きです。 いろいろやっていたと思うのですが、あまりメモに残してなかったのでざっくりと。間違った情報があったら申し訳ありません。 2/9〜2/13 エンティティとテーブルの再構築 とりあえずIntegerとString(VARCHAR)で開発を進めていた 実際の現行テーブルは数値にはNUMERIC、文字列にはCHARが使われていた というわけで型を揃えることにした gen-entityを行うと以下のようになった NUMERIC (DB2) → BigDecimal (Java) CHAR (DB2) → String (Java) gen-ddlでは以下のようになる BigDecimal (Java) → DECIMAL (DB2) String (Java) → VARCHAR (DB2) BigDecimal/DECIMAL、Str

  • はじめてのSAStruts 5週目 - 130単位

    はじめてのSAStruts 4週目 - 130単位 の続きです。 DBアクセス処理を実装していくにあたり、O/RマッパーのS2JDBCを格的に使い始めました。 2/2〜2/6 複数のスキーマからエンティティ自動生成 スキーマ毎にxml定義を作成してみる 「schemaname」に対象のスキーマ名を記述 Gen-Entityのみで、他のタスク(Geb-Namesとか)には不要 それぞれのxmlをAnt実行 (ただし基的に最初の1回しか実行しないため、1ファイルで都度書き換えればよいのかも) DDL生成時(Gen-DDL)は、1つのxmlを実行すればよい(エンティティでの指定が必要(後述)) 参考:Seasar2 - S2JDBC-Gen - Gen-Entity ▼s2jdbc-gen-build.xml <project name="app-s2jdbc-gen" default="g

  • S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ

    このエントリーではSeasar 2.4.26 から 導入された S2AbstractService について書かせて頂きます。S2AbstractService を活用することで、タイプセーフを保ちつつも、データアクセスロジック関連のソースコードを大幅に減らす効果が期待できます。 S2JDBC の弱点 S2JDBCを使えば、お手軽かつパワフルにデータアクセス処理が実現できます。しかし、生のS2JDBCを野放し状態に使った場合、プロジェクトの規模が少し大きくなると、ソースコードの重複を生みやすくなる問題に直面します。具体的に、次の1件分のデータ取得処理ですら、コピー&ペーストされて複数箇所で使用されてしまいます。 Emp emp = jdbcManager.from(Emp.class).id(empId).getSingleResult(); 対処方法は、共通処理を抽出してメソッド化するこ

    S2JDBC の弱点を補完するS2AbstractService - 出羽ブログ
  • S2AbstractServiceは便利なJdbcManagerじゃないよ - ひがやすを技術ブログ

    シンプルな問い合わせは、メソッドにしない。 Serviceクラス使ってる意味なくね? aaSerivce.selectById(aaId); というように、ID指定で取得するような問い合わせは、selectById()メソッドを作らず、 aaService.select().id(aaId).getSingleResult(); って書くんだと。なんでも、メンテナンスコストが下がるとかで。逆だろ、上がるだろこれ。 「シンプルな問い合わせは、メソッドにしない」というのは、S2JDBCのコミッタの間では推奨されていません。コメントによると個人事業主のつぶやきさんのプロジェクトの規約のようですね。 Serviceを利用する場合、使うほうは、select().id(aaId).getSingleResult()のように流れるようなインターフェースを使うのではなくて、ServiceにselectBy

    S2AbstractServiceは便利なJdbcManagerじゃないよ - ひがやすを技術ブログ
  • S2AsbtractServiceの使い方について - かとじゅんの技術日誌

    以下について誤解のないように書いておきます。 シンプルな問い合わせは、メソッドにしない。 Serviceクラス使ってる意味なくね? aaSerivce.selectById(aaId); というように、ID指定で取得するような問い合わせは、 selectById()メソッドを作らず、 aaService.select().id(aaId).getSingleResult(); って書くんだと。なんでも、メンテナンスコストが下がるとかで。 逆だろ、上がるだろこれ。 これすごくわかります。私も結構悩みました。来は個人事業主さんのいう姿がよいと思います。 が、ここから題。 私も最初のころはselectByIdをAbstractServiceにつくっていました。selectByIdって便利ですね、でもFKで関連しているテーブルもJOINしたいのですができないみたいなんですが、、、何かよいメソッ

    S2AsbtractServiceの使い方について - かとじゅんの技術日誌
  • S2JDBCを使ってます。 - 個人事業主のつぶやき

    今、仕事でS2JDBCを使っている。 TeedaとかS2Daoとかはかなり前から使っていたんだけど、 S2JDBCを使うのは始めて。 流れるようなインターフェイスってすげぇなぁ・・・とつくづく思った。 で、このS2JDBCを使う仕事、結構大きいプロジェクトなんだけど、 S2JDBCの使用に関して、私には理解不能な決まりがある。 なんか、言っても聞かなそうなので、ここで抗議してみる。 で、その決りごと。(すべてが反対ではないので、よく読んでくださいw) S2JDBCはエンティティ1個に対してServiceクラスを作成し、それを介して処理を行うこと。 これは、大賛成。 S2JDBC(jdbcManager)を生で使用するのは気が引ける。 参考:http://d.hatena.ne.jp/dewa/20080706/1215308304 各Serviceクラスは対応するエンティティに対する処理以

    S2JDBCを使ってます。 - 個人事業主のつぶやき
  • 続・SAStruts + S2JDBCのアーキテクチャ 2008-06-06 - 出羽ブログ

    ここで疑問点があります。この疑問点のため、眠れなくて早く起きてこのエントリを書いています。笑 ・ビジネスロジックをEntityとServiceに書く設計(最近流行のDDDの設計)だと思いますが、Entityのメソッドには、insertとかupdateとかdelete、かつエンティティ独自の振る舞いを持たせるServiceのメソッドには、findAllとかfindByNameとかというものが用意される認識で良いのか? ・S2Daoを使用していた時は、1画面につき1Dtoを作って、そのDtoを画面表示に使っていました。 S2JDBCを使用すると、関連先のEntityが対象Entityにくっついて検索されるので、Entityを画面表示に使っても良い? 画面表示用のDtoは不要? 以下に、自分なり回答をさせて頂きますので、参考までにどうぞ。 まず、Entityのメソッドには、insertとかupd

    続・SAStruts + S2JDBCのアーキテクチャ 2008-06-06 - 出羽ブログ
  • S2JDBC使う前に読むべきエントリー あるいはServiceクラスの実装について - プログラマでありたい

    S2JDBCでServiceクラスをどのように作るか考えた時に参考にしたエントリー群です。肝は、3点。 Serviceクラスは、Entityクラスと1:1で対応させる。 Serviceクラスは、Entityに対する処理以外はやらない。 Serviceクラス以外は、jdbcManagerを生で使用しない。(Actionにとか) AbstractServiceを作成し、DBに関する共通処理を集約させる(削除フラグとか更新日とか) あ、4つになったw 公式ドキュメント二つ まず読みましょう S2JDBCとは サービスの作り方 JavaDoc こっちも必須です。 javadoc: S2AbstractServiceクラス 出羽さんのエントリー。納得できるまで、読み返すこと S2JDBC の弱点を補完するS2AbstractService 続・SAStruts + S2JDBCのアーキテクチャ ジェ

    S2JDBC使う前に読むべきエントリー あるいはServiceクラスの実装について - プログラマでありたい
  • JDBCの設定

    S2DBCP Webコンテナ定義のDataSourceを使う APサーバのコネクションプールを使う 複数のデータソースを利用する 異なった種類のデータソースを使い分ける 同じ種類のデータソースを動的に切り替える 概要 Javaでデータベースにアクセスするには、データソースを経由したコネクションプールを使うのが一般的です。 コネクションプールは通常、アプリケーションサーバが実装しますが、 Tomcatのようなトランザクションと連動するコネクションプールの実装のないアプリケーションサーバ用に S2DBCPを用意しています。 データソースの設定は、jdbc.diconで行ないます。 jdbc.diconはクラスパスの通っているディレクトリ、 通常はWEB-INF/classesにおきます。 S2DBCP XADataSource、ConnectionPoolの設定をおこないます。 JDBC Dr

  • S2JDBCで複数DB接続する つづき - newta(にゅーた)の日記

    koichikさんからコメントもらっちゃった、ワーイ。 で、 Customizer で適切な JdbcManager が DI されるようにするのがオススメです. とのことなので、 前回の1つ目の方法をベースにServiceにDIするJdbcManagerを切り替えるようにしてみる。 とりあえずカスタマイザを作ってみた。 /** * DIするプロパティ設定をカスタマイズします。 * @author newta */ public class DIPropertyCustomizer extends AbstractCustomizer { private final String expression; private final String propertyName; public DIPropertyCustomizer(String propertyName,String expr

    S2JDBCで複数DB接続する つづき - newta(にゅーた)の日記
    bigbro
    bigbro 2012/09/03
    Customizer の正しい使い方。Creator はコンポーネント定義を作るのが責務、作られたコンポーネント定義をゴニョゴニョするのは Customizer の責務という役割分担。
  • S2JDBCで複数DB接続する - newta(にゅーた)の日記

    SeasarのS2JDBCで複数DB 方法は2つあります。 ・JdbcManagerを2つ用意する方法。 ・SelectableDataSourceProxyを使用する方法。 まず、1つ目のJdbcManagerを2つ用意する方法から jdbc.diconを元にDataSourceを2つ定義します。 H2とOracleの設定です。DBのチョイスは適当。 ここは2つあるだけでいつもと一緒。 jdbc-a.dicon <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components namespace="jdbc"> <include pa

    S2JDBCで複数DB接続する - newta(にゅーた)の日記
    bigbro
    bigbro 2012/09/03
    コメント欄に重要な情報が載っている。
  • mikuriya.biz

    This domain may be for sale!

  • Seasar2(SAStruts,S2JDBC) 覚書き - SQLファイル

  • SAStruts/S2JDBC JSPで画面部品を作ってみる - 130単位

    これまではこんな感じで週ごとに振り返ってきましたが、なかなか現実に追いつかず、また記憶があいまいな部分もあったりして、ちょっと書くのがしんどくなってきました。 これからはその日やったことを、HOTな状態のまま書いていきたいと思います。 画面部品 マスタ系テーブルから項目取得 セレクトボックスで表示 こんな画面部品をつくりたいと考えました。 参考リンク その1: 画面部品 - C/pHeR Memo - Java とか。Eclipse とか。 その2:Cubby - Tips 集 ひと月前にこれらの記事を見たときはさっぱり意味がわかりませんでした。が、あらためてサンプルを見なおしてみたところ、作れそうな気がしてきたので実践してみることに。 よくある従業員テーブルから、idとnameでセレクトボックスを作る場合を例にしてみます。 失敗例 上記リンクその2のサンプルを参考にして、S2JDBCのS

  • http://triple-c.sakura.ne.jp/hatena_dl/each_hatena_show.php?id=148683

  • S2JDBCでのjoinについての備忘録 - 備忘録のようなもの

    業務でS2JDBCを使っているのですが、テーブル結合のやり方がわかったので簡単に備忘録を残します。 ポイントは、 テーブル間の結合定義 プロパティの追加 アノテーションの設定 結合カラムの設定 joinの記述 です。 例題 以下のような二つのテーブルをinner joinしてみよう。 TABLE_ONE 名前 型 P id int ○ name varchar(20) info_id int crete_time datetime TABLE_TWO 名前 型 P id int ○ keyword varchar(20) crete_time datetime なお、二つのテーブルの関係性はテーブル1:テーブル2 = n:1(多対1)。 外部キーは使わない物とする。 TABLE_ONEのエンティティ名をTableOne、TABLE_TWOのエンティティ名をTableTwoとする。 テーブル

    S2JDBCでのjoinについての備忘録 - 備忘録のようなもの
  • SAStruts+S2JDBCでwebアプリ(6) - aki193の日記

    UnitテストJ2Unit(JUnit3の拡張機能)とJ2Unit4(JUnit4向けの拡張機能)が存在する。S2Unit ActionクラスのUnitテスト public class DeptActionTest extends S2TestCase { /* 自動バインディングしてくれる */ private DeptService deptService; private UserDto userDto; private DeptForm deptForm; @Override protected void setUp() throws Exception { super.setUp(); include("app.dicon"); } /** * indexメソッドのテスト */ public void testIndex() { //actionクラスのインスタンス生成 Dept

    SAStruts+S2JDBCでwebアプリ(6) - aki193の日記
  • SAStruts+S2JDBCプロジェクトの基本設定 その1 - 盗鋼石の雑記

    SAStruts, S2JDBC | 22:53データベース接続設定S2JDBCではデータベース接続設定はjdbc.diconに記述しますが、JDBCドライバー、URL、ユーザー、パスワードの情報はプロパティファイルに外出しします。このプロパティファイルをDBConfig.propertiesという名前にして、src/main/resourcesにおきます。DBConfig.propertiesの例。(H2データベースへの接続例) jdbc-driver=org.h2.Driver db-url=jdbc:h2:tcp://localhost/saspractice db-user=sa db-password= jdbc.diconも一部変更します。 ・・・ @org.seasar.framework.util.ResourceUtil@getProperties("DBConfig.p