springのメモ

■springMVCの例外処理について
refs:
springの3種類の例外ハンドリング方法を紹介します
springMVCの例外ハンドリング

■springの外だしxml設定ファイルのbeanクラス定義方法を「beans:bean」から「bean」へ

<annotation-driven />
<mvc:annotation-driven />

refs:spring設定ファイルの記述を「beans:bean」から「bean」に変更する方法


■自サイト
refs
springのシングルトン問題~mvcのスレッドセーフ,@Scope("prototype")
spring tool suite,spring

■外だしのプロパティファイルなどを読み込む場合
・外だしxml設定ファイルで定義する。classpath/file
bean id="classpathProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:classpath.properties</value>
</list>
</property>
</bean>

<bean id="fileProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>file:${user.home}\Documents\GitHub\spring-classpath-file\src\main\resources\file.properties</value>
</list>
</property>
</bean>

refs:springMVCのclasspathとfileの違い

■spring,junitのテスト
@RunWithと@ContextConfigurationでspring用のjunitを作成する

springのmvcのシングルトン問題について

ここが解りやすく書いてある。
refs:springのシングルトン問題を@Scopeを使って回避する

しかし初期設定がsingltonとかいかんだろ。これだからフレームワークは信用ならんとかいう評判が広まるんだな・

@Scopeの引数がprototypeと書いてあるけど、これはプロトタイプベースにするって意味?

プロトタイプベースとクラスベース(オブジェクトベース)についてはググればいくらでも情報は出てくる。

refs:そろそろきっちりJavaScriptクラスベースとプロトタイプベースの違い
jpaについてのメモがき。


refs
wiki(jpa)
JPA 2.0入門
EJB3.0 の勉強 (8) Java Persistence API (JPA) を使ってみる。 (9)(10)もjpaについての内容

javax.persistenceパッケージはinterface。実装はhibernate,ebeanとか・・・かな?

■@OneToMany、@ManyToOne
外部リレーションについて。Oneが所有者側のentity,Manyが被所有者側のentity。
下にサンプル。ModelはなんかのORMのクラス。ebean,hibernateとか。

・所有者側のソース
public class ClassA extends Model {


@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "classAObj")
public List<HiClassB> employeeGroups = new ArrayList<HiClassB>();


}

・被所有者側のソース
public class HiClassB extends Model {


@ManyToOne
@JoinColumn(name = "hoge_id")
public ClassA classAObj;


}

■eagerとlazyについて
上の(fetch = FetchType.EAGER
refs:LAZY フェッチ/EAGER フェッチ

全ての永続化フィールドに対して、Entity 生成時に読む込む(EAGER フェッチ)かアクセスする際に初めて読み込む(LAZY フェッチ)かを指定できます。指定しない場合、以下のアノテーションが指定されたフィールドは LAZY フェッチがデフォルトとなります。

@OneToMany (1 対多の関連を表すフィールドに付ける)
@ManyToMany (多対多の関連を表すフィールドに付ける)
それ以外は EAGER フェッチがデフォルトです。本ページのサンプルコードでは全てのフィールドが EAGER フェッチとなります。フェッチタイプを明示的に指定する場合は、以下の様に指定します。

だそう・・・

■@OneToMangeのmappedBy属性

refs:2.6.3 OneToMange /

また,双方向の関係にする場合は,非所有者側に必ずmappedBy属性を指定してください。
mappedBy 任意 被所有者側のエンティティクラスの要素に付与し,所有者側のエンティティクラスで関係を保持しているフィールドまたはプロパティの名前を指定する属性です。
説明
被所有者側のエンティティクラスの要素に付与し,所有者側のエンティティクラスで関係を保持しているフィールドまたはプロパティの名前を指定する属性です。
この属性を指定した場合,関係は双方向になります。

だそう・・・
javaのjsonライブラリといったら、jsonicかjacksonだと思う。

jsonicは下からダウンロードできる
jsonicのsourceforge

落としたファイルはjsonic-1.3.0.zip。なかにはソースとjsonic.1.3.0.jarが入っていた。jarはpom.xmlファイルがあったからmavenプロジェクトだと思う。

jacksonは下からダウンロードできる。
jacksonDownload

Downloads, 2.xのところから以下の3つのjarファイルをダウンロード(2013/10/27時点)
・Core(jackson-core-2.2.0.jar)
・Annotations(jackson-annotations-2.2.0.jar)
・Databind(jackson-databind-2.2.0.jar)

refs
Java:Jacksonで受信したJSONをパースする手順まとめ
Jackson vs JSONIC、結果はJacksonの圧勝


ちなみに上の結果はjacksonの圧勝というサイトと同じソースで試してみたけど、jsonicの方が1.5倍くらい早かった。それぞれのバージョンは上で書いた通り。

あと、spring.mavenでjsonicの利用
refs:JSONICを使ってRESTFullなAPIを作ろう