java

JMockitを使ってStaticクラスをMock

10年近く前、まだテストなんて概念すら知らないときに作ったシステムがいまだに動いています。 当時はPHPしか経験がなかったのですが、開発はJavaでなければいけないということでHello Worldから始めました。 なんとか完成したものの、変更に次ぐ変更によっ…

JPAについて調べてみた

ほぼ毎日使うのだけれど、かなり曖昧な理解のまま放置していた。 エラーが起こるたびに場当たり的な対処をしてきましたが、これではいけないと1から調べてみました。 間違っている箇所もあるかもしれませんので、お気づきの点はぜひご指摘ください。永続化…

Playframework モデルのプロパティのデータ型を指定する

PlayframeworkでモデルにString型のプロパティを追加すると、データ型はMySQLだと自動的にVARCHAR(255)になります。 このままだと255を超える長さの文字列を追加しようとするとPersistenceExceptionになります。PersistenceException occured : org.hibernat…

PlayFramework Listを使ってIN句でqueryをかける

idとtypeでqueryをかけて結果を取得するような場合、bindを使ってListの内容をそのままIN句に使うことができます。 String型のリストなら自動でシングルクォートを付けて、SQLエスケープもやってくれるようです。 List<MyModel> list = new ArrayList(); List<Long> idList </long></mymodel>…

PlayFramework ManyToManyのリレーション

// 親モデル @Entity public class Parent extends Model{ @ManyToMany(mappedBy="parents", cascade=CascadeType.ALL) @OrderBy("birthday") public List<Child> children; } // 子モデル @Entity public class Child extends Model{ @ManyToMany public List<Parent> pare</parent></child>…

PlayFrameworkでセッションID、DBのデータが必要なFunctionalTest

たぶんFunctionalTestの使い方が間違ってますが一応書こうと思います。まずセッションIDについて。 開発中のアプリで、セッションにモデルのIDを保存しておくメソッドと、そのIDを後から使うメソッドがあります。 簡略化して書くと下のようなコードです。実…

PlayFramework 別のモデルと関連があるモデルにGsonのtoJsonが使えないとき

Gsonを使うとモデルをそのままJSON形式に変換したい時に、こんな形で一発変換できます。 Gson g = new Gson(); Person p = Person.findById(myId); g.toJson(p); // {"name": "Taro Yamada", "birthday": "1920/06/30"} ただ、Personが別のモデルとManyToOne…

Ajaxリクエストをテスト

PlayのFunctionalTestでAjaxリクエストをテストしてみました。 ここではJSON形式でデータを渡すので、Gsonを使ってHashをJSON形式に直してからPOSTしています。 HashMap dataToSend = new HashMap(); dataToSend.put("key1", "value1"); dataToSend.put("key…

PlayFrameworkのtemplate その2

Includeテンプレートの中で別のテンプレートを呼び出すにはincludeを使います。 includeされたテンプレートでは、親テンプレートで使用可能な値を使うことができます。includeする親側での呼び出しは下のような形です。 #{include 'Books/bookDetail.html'} …

PlayFrameworkのtemplate

今日はPlayのテンプレートで3つ発見があったので、そのときのことをメモします。 ソースが手元にないので覚えてる部分から書いていきます。・別のテンプレートをページの一部に読み込む(Railsのpartialみたいな) ・ループの中でインデックスを取得する ・…

PlayFrameworkでTDDのマネをしてみた

自分用の小さな開発案件にPlayを使ってTDDを真似てみようと思いました。 とりあえずModelのテストからと書き始めたところ… //Model @Entity public class Company extends Model{ } //Test public class CompanyTest{ @Test public void testSomething(){ Co…

JenkinsでVerifyError

新しく仲間に加わったJenkins氏がPlayのプロジェクトのテスト実行時にエラーを吐いていた。 APIをみても「some sort of internal inconsistency or security problem」といまいちはっきりしないのですが。 Execution exception VerifyError occured : Expect…

PlayでCRUDモジュールを使う

最近知ったPlayフレームワークがすごい。 JavaだけどRailsみたいな感覚で開発ができる。個人的にはMigrationがいらない分、Railsよりサクサク開発できる。OSに関係なく手間いらずで動くし、プロトタイプをサッと作るのにはもってこい。そんなPlayでCRUDモジ…

WindowsでTomcatとApacheの連携

久しぶりにWindowsでサーバーを設定したのでメモしておきます。 やりたいことは1台のサーバーにTomcat、Apache、MySQLを突っ込んでPlay Frameworkでアプリケーションを動かすことです。とりあえず動くというだけなので、あまり参考にはならないと思います。…