JNDI

JNDI(Java Naming and Directory Interface)

説明しろっていわれてもわからない。

参考:https://www.ibm.com/developerworks/jp/websphere/library/was/was_jndi/1.html

●ネーミング・サービス
1.名前をオブジェクトに関連づける
2.名前を基に、関連づけられたオブジェクトを検索
要はバインディング

●ディレクトリ・サービス
ネーミングサービスが名前から単にオブジェクトを検索するのに対して、オブジェクトの複数の属性も扱うことができる。


結局
javaアプリケーションからJNDI APIを使ってファイルシステムLDAPDNSなどの構造をもった
ものをオブジェクトとしてjava側で扱えるようにする。

MyBatis

いつのまにか日本語のドキュメントができあがってる

http://www.mybatis.org/core/ja/getting-started.html

普段はiBatisなので、MyBatisをまとめる。

SqlSessionFactoryが中心

SqlSessionFactoryBuilderからSqlSessionFactoryのインスタンスを生成(生成の設定はxmlか独自Configurationクラス)

SqlSessionFactoryからSqlSessionのインスタンスを生成(SqlSessionには,一連のSQLコマンドを実行するためのメソッドが全て用意されている)

補足:iBatisとちがってMyBatisはネームスペースが必須

<結局重要な4つのクラス>

・SqlSessionFactoryBuilder(ローカルスコープ)

・SqlSessionFactory(アプリケーションスコープ)

・SqlSession(ローカルスコープ ※スレッドセーフじゃないから)

・Mapper(当然SqlSessionと同じ)


簡単な例

SqlSession session = sqlSessionFactory.openSession(); 
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
} finally {
  session.close();
}

補足
SQLステートメントをxmlでやるのか、あのテーションでやるのかというところで
個人的にはアノテーションよりもxmlでやる方が好き!!
なぜならアノテーションではそれなりに制限がある(まだすべて把握できていないけど)
だから簡単なのはアノテーションで難しいのはxmlみたいにしてステートメントが散らばるのがいやだから。
だったら複雑なのも簡単なのもxmlでやっといた方が保守性があがるかなと思った。

velocity

意外に使ってないのでメモ

velocity:よくあるテンプレートエンジン

極論ゆうとMVCとかのVに重点をおいたサーブレット

[スマート設定]

1.必要なjar

・velocity-**.jar

・velocity-tools-**.jar[velocityViewServletが入っている]

・その他commons系

2.web.xml

<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.VelocityViewServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>

3.各フレームワークにそれぞれオブジェクトの受け渡しを行いやすいようにライブラリが用意されているっぽい。

4.ソースを詳しく読んでないかからなんともいえないけど、どうして最低二つのjarがいるのかってところで、
テンプレートエンジンとしてだけ使うならvelocity.jarだけで十分だけど、結局Webアプリに統合するってことになると何かとvelocity-toolsの方の機能が必要になってくる。

以上簡単なメモ