今更ながらjava.sql.Dateに嵌っている件の続き

zizgig.hatenadiary.org

上記記事の続きです。

あの後色々と有識者に聞いて情報を入手しました。

具体的には以下の情報で、ojdbcのDate型の挙動が変更されているというものです。

 

https://asanga-pradeep.blogspot.com/2016/10/change-in-12c-jdbc-behavior-setdate.html

 

本来ならプログラムを修正して正しく動くように直すのが最善でしょうが、期間的にも厳しそうなので、

以下のVM起動のオプションをつけることで対応する方向になりました。

色々と情報をいただいた人に感謝です。

 -Doracle.jdbc.DateZeroTime=true

 

今更ながらjava.sql.Dateに嵌っている

プロジェクトの絡みでojdbcを6から8にあげたんですが、java.sql.Dateの動きが変わって動かなくなりました・・・。

 

具体的にはjava.sql.Dateは日付までを扱うクラスで時分秒を扱わないはずなのですが、何故かojdbc8にあげたら、検索や登録で時分秒を使うようになってしまい、where句で日付指定したら検索されなくなったり、 DB登録したら時分秒を持ってしまい 既存の値と整合性がとれなくなったりと散々な目にあってます。

 

google先生に助けを求めて見ているのですが、それらしい情報はヒットせず。 ただ、ちょこちょこは上手くいかない旨の記載はありますね・・・。

 

まあ、元はといえば、 java.sql.Dateを使う場合は、時分秒はちゃんと0を指定しなければいけないのであって、 それを怠っているからなのですが、 この時期に見つかると正直ちょっときついかなと・・・。

参考:https://higayasuo.hatenablog.com/entry/20090219/1235020303

 

どこかに参考情報転がってないですかね・・・。

JSFでh:selectOneMenuの値の変更にあわせて画面を動的に動かしたい

久しぶりの投稿です。

今更な基本的なお話しです・・・。
よくある話なのですが、プルダウンを変更したときに他の画面項目の値を変更したいということがありました。


このとき、プルダウンの値が変更されたら別項目の値を変更するように、
JavaScript側でonchangeでリスナーするのが普通だと思うのですが、
JSFの場合、idが特別なものになってしまい、JavaScript側でうまく認識してくれません・・。

xhtmlでの記述

  <h:selectOneMenu id="test1" class="test1Class" value="#{exampleBean.testValue}">
    <f:selectItem itemValue="A" itemLabel="A" />
  </h:selectOneMenu>

HTMLに変換後

 <select id="j_idt7_test1" name="j_idt7_test1" class="test1Class">
   <option value="A" selected="selected">A</option>
 </select>


これを解決しようと思ったとき、一つはidを使うのではなくclassのほうを使う方法があります。
classのほうは変換されていないので、そのままとれます。

    $(document).ready(function() {
        $(".test1Class").change(function(){
             ~~~~
        });
    });

ただ、classてこういう使い方を想定していないですし、
cssとかと組み合わせたら変なことになると思うので、さすがにこれはイケてないのかなと思います。


ここは、ajaxを使うのが正解なのかなと思います。

<f:ajax event="change" render="renderTest" listener="#{exampleBean.changeTest()}">
  <h:selectOneMenu id="test1" class="test1Class" value="#{exampleBean.testValue}">
    <f:selectItem itemValue="A" itemLabel="A" />
  </h:selectOneMenu>
</f:ajax>


でも、わざわざこのためにajax使うのも馬鹿らしい気がするなと思ったり。

Java Day Tokyo 2018に参加してきた


一年に一回のお約束。


ということで、今年もJava Day Tokyo 2018に参加してきました。
今年は仕事の関係で、午前中は打ち合わせ。
午後も会場に行ったけど問い合わせがあって、
ロビーでパソコンとにらめっこという体たらく。
結局ちゃんと参加したのは次のセッションでした。

  • JDKの新しいリリースモデル
  • Java Misson Control 6.0と新しいJava Flight Recorder
  • 50分で最新技術学習の基礎を身に付ける
  • Ask the Experts!


Javaの新しいリリースモデルについても
概要は知っているけど、というレベルだし、
そもそも今扱っているシステムが
バージョンの関係でJava6相当だし、
Java9どころかJava8も夢のまた夢状態で
かなりの浦島状態ではあるのですが、
いろいろと変わっていくJavaを感じられたのかな・・・とは思いました。


そのいろいろ変わろうとしているのに、
自分も含めてぜんぜんついていけてないことに
ちょっと危機感を覚えつつ、、、、
思った以上のスピードで先にいっているな、、、というのが正直な感想。


今年に入っていろいろと環境も変わっているし、
ひとまず、少しでも触って素振りをしていこうかな、、、と思いました。
久々にいい刺激をうけてよかったです。


あまり細かい内容を書いていないですがwww
まずは簡単な感想をば。

JavaDay Tokyo 2017に行ってきたよ

前回投稿したのが2016年のJavaDayって・・・。


ということで、見事に一年ぶりの投稿になりました。
前回も若干浦島気味でしたが、
今回はさらに輪をかけて最新動向をウォッチしていなかったので・・・。
MVC1.0がEE8が落ちたって初めて聞きましたよ。


で、参加したのは次のセッション

  • 基調講演
  • Java 9 and Beyond
  • Java EEにおけるフロントエンド開発とJSF2.3アップデート
  • Deep Learning with Java
  • Java SE 9のすすめ
  • Java技術メモ三銃士が語るエンジニア道
  • ナイトセッション


実は初っ端に
会場を間違えて事前登録と違うところにいってしまったのですが、
開き直って節操なく聞いた感じです。
ただ、前日あまり寝ていなくて、途中眠くてあまり頭に入っていないところがあるのですが・・・w。


Java SE 9に関しては体系だってちゃんと把握していなかったので、
非常に勉強になりました。
ただ、一番のポイントになるJigsawのセッションをはずしてしまったので・・・w。
そこは別途公開される資料などを漁ろうと思います。
やはりJigsawのおかげ?でJava SE 9はかなり違うものになりそうなので、
きちんと自分の中に落としておかないと、
いろんなところで嵌りそうなので注意したいなあと。
※ただし、今の仕事でSE9を使うのはいつになることやら。
 ミドルウェアの都合でサードパーティJVMを使用しているとどうにもならないねぇ。


ということで久々の技術系セミナー、非常に楽しかったです。
このブログやtwitterも更新頻度あげなきゃかな???
三銃士のセッションで言っていた、無理なくこつこつとは非常に大事なことなので
見習いたいなと思います。

まずは簡単に。何かあれば別途追記します。

JavaDay Tokyo 2016に行ってきたよ

勉強会はブログにあげるまでが勉強会です。


ということで、久々(2年ぶりw)の投稿ですが、
JavaDay Tokyo 2016に行ってきたので簡単な感想をば。


こういう勉強会は正直言うと前回のJavaDay Tokyo 2015以来くらいな感じで、
最近のJavaの動向もそこまでwatchしていなかったので、
正直かなりウラシマ状態で参加したのですが、
久々の技術系勉強会楽しかったなあと。


参加したのは次のセッション。

  • 基調セッション
  • Java SE 9 Overview
  • Project Jigsawではじめるモジュール開発
  • 移行事例に基づくJavaEEマイグレーションに向けてのアプローチ
  • 実践してわかったJavaマイクロサービス開発
  • 実システムのためのJava EE 7
  • パネルディスカッション


全体的に面白そうなものをざっくばらんにとってったら、節操のない組み合わせになりました。
JavaSE9についてはあまり情報を仕入れていなかったので、かなり新鮮でした。
Jigsawも今までぼやっとしていたのでsが、大分はっきりしました。
クラスパスに書いていたことがmodule-infoに移っただけではないかという気もしなくもないのですがw。

また、それ以外の部分に関しても、やっぱりそうだよなあというところが多かったですね。
最後はいきなりファミコンの話をしだしたりとw。


今使っているシステムがミドルウェアの関係でJava6どまり(しかもアップデートできない)の状態なので、
SE9の情報はいつ利用できるのか状態ですが、
今後少しずつでも素振りしていきたいなと思った一日でした。
こういう新しいことに触れていくのは楽しいです。


あと、一日ずっとつぶやいていて変なことをつぶやいていたらすみません。
持っているデバイスの関係でつぶやくのが難儀していたのですが、
初めて快適につぶやき続けれました。
ただ席の間隔が詰まっていたせいかかなり縮こまって座っていましたがww。
※前回とそう変わらないような気がするのですが、前回のほうがもっとゆったりとしていた気がするのは気のせいでしょうか・・?


ということで、今後どれだけ参加できるかわかりませんが、機会があれば参加していきたいなと思います。
時間があまりないのでざっくりとした感想しか書けていませんが、本日はこれにて。

Java 8ではinterfaceにstaticメソッドを記述できるようになりました。


interfaceに関する変更点として、Java 8ではdefaultメソッドが有名ですが、
他の変更点としてstaticメソッドが定義できるようになりました。


具体的には
次のようなメソッドが定義できます。

public interface Java8TestInterface {
    public static void hello(){
         System.out.println("Hello World!!");
    }
}


実行するには次のようにします。

// 実行可能
Java8TestInterface.hello();


このstaticメソッドはInterfaceから実行できて、implementしたクラスは自動で
該当メソッドを持っているわけではありません。

public class Java8TestImpl implements Java8TestInterface {

}


// コンパイルエラーになる
Java8TestImpl.hello();


これの派生でmainメソッドをinterfaceに実装して実行できるようになりました。

public interface Java8TestInterface2 {
    public static void main(String[] args){
        System.out.println("Hello World!!");
    }
}


実行結果:

run:
Hello World!!

どうでもよい無駄知識ですが。