SlideShare a Scribd company logo
1 of 44
Beginning Java EE 6 勉強会(1)
              -Java EE 6概要-

                   担当者:@making
                    Toshiaki Maki
                       2012/04/18
はじめに - Java EE 6勉強会の進め方
• 隔週水曜日に各要素技術をそれぞれ扱います
     – 座学+ハンズオン形式
     – 資料は業務外時間に作成し、原則SlideShareにアッ
       プします
•   概要 4/18 @making
•   JPA 4/25 @kjstylepp
•   EJB 5/9 @inatus
•   JSF 5/23 @XXX
•   JMS 6/6 @XXX
•   JAX-WS 6/20 @masato_ka
•   JAX-RS 6/27 講師募集中
12/04/18         Beginning JavaEE6 勉強会(1)   2
金魚本が手元にない方は
• いますぐぽちりましょう
• http://amzn.to/JavaEE6




12/04/18       Beginning JavaEE6 勉強会(1)   3
目次
1.      Java EE 6の概要
2.      Javaと永続化




     12/04/18      Beginning JavaEE6 勉強会(1)   4
第1章
                     Java EE 6の概要



12/04/18   Beginning JavaEE6 勉強会(1)   5
本論に入る前に質問
• 次のうち正しい組み合わせを全て選びなさい
     1.    J2SE   1.4 – J2EE 1.4
     2.    J2SE   1.5 – J2EE 1.5
                                                    ggrks
     3.    Java   SE 1.5 – Java EE 5
     4.    Java   SE 5 - Java EE 5
     5.    Java   SE 1.6 – Java EE 6
     6.    Java   SE 6 – Java EE 6
     7.    Java   SE 7 – Java EE 6




12/04/18                 Beginning JavaEE6 勉強会(1)           6
Java EE 6の概要
• 内部アーキテクチャ
• Java EE 6で新しくなった点




12/04/18   Beginning JavaEE6 勉強会(1)   7
1.1 Java EE とは
• Java Enterprise Edition
• Javaで(主に)Webアプリケーションを構築するための
  数々の仕様、およびその実装です。
     – Servlet、JSP、EJB、JPAとか
• Java EEの仕様を満たした機能を提供するアプリケー
  ションサーバをJava EEアプリケーションサーバと呼ぶ。
     –     GlassFish(Oracle)
     –     WebLogic Server(Oracle)
     –     WebSphere Application Server(IBM)
     –     JBoss Application Server (Redhat)
     –     Cosminexus (Hitachi)
     –     Interstage (Fujitsu)
     –     WebOTX (NEC)
     –     Geronimo (Apache)
• 同じアプリケーションならどのサーバでもが動く(は
  ず、、)
• Tomcatはただのサーブレットコンテナです
12/04/18                  Beginning JavaEE6 勉強会(1)   8
1.1.1 Java EE 6の歴史

                                                                          Flexible

                                                           Ease of
                                                           Development
                                                                           Java EE 6
                                            Web Services
                                                                          Pruning,Pro
                              Rubustness
               Enterprise                                                   files,EJB
               Application
                                             J2EE 1.4       Java EE 5      Lite,JAX-
                                                                             RS,CDI
                                                Web        Annotation
                J2EE 1.2        J2EE 1.3
                                             Services,     s,EJB3.0,JPA
                                            Manageme       ,JAX-WS,JSF
               Servlet,JSP,     EJB CMP,
                                            nt,Deploym                    Web Profile
                EJB,JMS,          JCA
                                                ent
 Project JPE    RMI/IIOP
                                                                           Managed
                                                                            Bean
May 1998        Dec 1999      Sep 2001      Nov 2003       May 2006       Dec 2009


12/04/18                      Beginning JavaEE6 勉強会(1)                               9
Java EE 6の全体像




           http://www.slideshare.net/takakiyo/jjuc-ccc-2010-spring より拝借
12/04/18                   Beginning JavaEE6 勉強会(1)                       10
ざっくり分類
•   プレゼンテーション層→JSF
•   トランザクション層→EJB
•   データアクセス層→JPA
•   DI、コンポーネント管理→CDI
•   メッセージング→JMS
•   WEBサービス→JAX-WS、JAX-RS




12/04/18      Beginning JavaEE6 勉強会(1)   11
1.2 Java EE 6の新しいキーワード
• さらなる開発容易性向上
     – 5で大きく変わり、EJB、永続エンティティ、Web
       サービスがアノテーションベースに
     – 6ではJSFのマネージドBeanがアノテーションベース
       になり、XMLディスクリプタも不要に
     – Servlet3.0やCDI(Contexts and Dependency
       Injection)、Bean Validation…金魚本には載って
       いません
• 古い技術のプルーニング
• 新しい仕様の追加



12/04/18         Beginning JavaEE6 勉強会(1)   12
1.2.1 軽量化
• プルーニング
     – EJB 2.X CMP エンティティBean (JSR318)
           • JPAへ
     – JAX-RPC (JSR101)
           • JAX-WSへ
     – JAXR (JSR93)
     – Java EE アプリケーション・デプロイ (JSR88)
• プロフィル
     – Java EEのサブセット or スーパーセットの提供
     – Webプロファイル
           • Servlet 3.0, JSP 2.2, EJB Lite 3.1, JPA 2.0, JSF 2.2
             等


12/04/18                 Beginning JavaEE6 勉強会(1)               13
プロファイル
• Java EEのサブセットをプロファイルとして定
  義可能
     – Java EEコンテナが特定のプロファイルだけ実装し
       てもよい
     – WAS8.5ではより軽量なLiberty Profileを提供



            Java EE Full Profile

                      Web Profile



12/04/18       Beginning JavaEE6 勉強会(1)   14
1.2.2 操作性の向上
• JSFやServletの設定が簡単に
• アノテーションの導入でXMLファイル(faces-
  config.xml、web.xml)への設定がかなり省略可
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;

@ManagedBean
                                                faces-config.xmlの
public class BookController {                   <managed-bean>タグ内に
  @EJB                                          記述していた情報がアノ
  private BookEJB bookEJB;                      テーションで表現可能に。
    private Book book = new Book();             (CDIを使うと@Namedで
    private List<Book> bookList;                OK)
    public String doCreateBook() {
      book = bookEJB.createBook(book);
      bookList = bookEJB.findBooks();
      return "listBooks.xhtml";
    }
}



12/04/18                         Beginning JavaEE6 勉強会(1)            15
1.2.3 豊富な機能
• JAX-RSでREST対応!
• JPA2.0でデータベース操作がより柔軟に
• EJB3.1でSingleton Session Bean(アプリで唯一のインスタンス)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("books")
public class BookResource {
  @PersistenceContext
  private EntityManager em;

    @GET
    @Produces({"application/xml", "application/json"})
    public List<Book> getAllBooks() {
      Query query = em.createNamedQuery("findAllBooks");
      List<Book> books = query.getResultList();
      return books;
    }
}

12/04/18                        Beginning JavaEE6 勉強会(1)   16
1.2.4 移植性の向上
• JNDI名が標準化され、どのコンテナでも同じア
  プリをデプロイできるようになった
     – これまではベンダ毎(GlassFish、JBoss、WebLogic)
       が独自に設定していたため、他製品へ移行する際に
       JNDI名を変更する必要があった
• 組み込みコンテナが標準APIで用意され、
  JavaSEでEJBの単体テストが簡単に行えるよう
  になった
     – EJBContaioner container =
       EJBContainer.createEJBContainer(p);
     – Hello hello = (Hello)
       container.getContext().lookup(“java:global/cl
       asses/Hello”);
• 7章で!
12/04/18           Beginning JavaEE6 勉強会(1)        17
第2章
                     Javaと永続化



12/04/18   Beginning JavaEE6 勉強会(1)   18
Javaと永続化
• データの永続化
     – 通常はリレーショナルデータベースに永続化
     – リレーショナルデータベースとJavaオブジェクト
           • 主キー・外部キー・テーブル結合などオブジェクト指向言語
             とはまったく異なる表現
• Javaオブジェクトの永続化の方法
     – シリアライゼーションによる永続化
           • java.io.Serializableインタフェース
           • シンプルな機構であり、クエリ言語など機能が十分でない
     – リレーショナルデータベースによる永続化
           • Java Database Connectivity(JDBC)によるアクセス
           • オブジェクト・リレーショナル・マッピング(ORM)
               – Hibernate
               – TopLink
               – Java Data Objects(JDO)
               – ◎Java Persistence API(JPA)
12/04/18               Beginning JavaEE6 勉強会(1)        19
2.1 JPA仕様の概要
• JavaEE5でJPA1.0が登場
• JPAはJDBCの上位の抽象層
• javax.persistenceパッケージ

• コンポーネント構成
     – ORM
     – エンティティマネージャ
     – Java Persistence Query Language
     – トランザクションとロック
     – コールバックとリスナ
     詳しくは3-5章で!

12/04/18            Beginning JavaEE6 勉強会(1)   20
2.1.1 仕様の歴史
•   TopLink
     – 1990年代初期からsmalltalk用に開発
     – Javaでも利用可能
     – しばらく標準化されず
•   JDO
     – 市場に浸透せず
•   初期EJB
     – EJB1.0(1998)
           •   Entity Container Managed Persistence(CMP)という重量級コンポーネントモデル
     – EJB1.1
           •   J2EE1.2の一部にEJB2.1
           •   CMP強化
•   Hibernate
     – 軽量のオブジェクト指向永続性モデル
     – オープンソースで成功
•   JPA1.0
     – Hibernateの多くの設計原理を導入
     – EJB3.0(JSR220)の一部に
     – JavaEE5に
•   JPA2.0
     – JSR317
     – JavaEE6に

12/04/18                      Beginning JavaEE6 勉強会(1)                     21
2.1.2 JPA2.0の新機能
• 単純データ型(String,Integerなど)のコレク
  ションと組み込み可能オブジェクトの個別テー
  ブルマッピング
• Map型対応
• 楽観的ロックに加え、悲観的ロックのサポート
• Criteria API導入
• JPQL拡張(case文など)
• キャッシングAPI

など(詳しくは3-5章で!)

12/04/18   Beginning JavaEE6 勉強会(1)   22
2.1.3 参照実装
• Eclipse Link 2.0
     – Oracle社からEclipse Foundation寄贈されたOracle
       TopLinkを基盤として開発
• その他の実装では
     –     Hibernate
     –     Toplink
     –     OpenJPA
     –     DataNucleus


• 以後、永続性プロバイダまたはプロバイダと呼
  ぶ

12/04/18                 Beginning JavaEE6 勉強会(1)   23
2.2 エンティティ
• オブジェクト エンティティ
• オブジェクトはメモリ内にのみ存在する概念
• エンティティはメモリ+データベース永続化さ
  れるオブジェクト

• 具象型でも抽象型でもOK
     – 継承・リレーションシップのサポート
• JPQLに問い合わせ
• データベースにアクセスしていることを意識し
  ない

12/04/18    Beginning JavaEE6 勉強会(1)   24
2.2.1 オブジェクトリレーショナルマッピング
• 永続化プロバイダがエンティティを認識し、
  マッピングを解釈できるように次の2つの形式
  で記述
     – アノテーション:エンティティのコードにアノテー
       ション(javax.persistenceパッケージ)を記述
     – XMLディスクリプタ:マッピングを外部XMLファイル
       に定義
• Configuration by exceptionの考え方
     – デフォルトのマッピング規則(クラス名とテーブル
       名は同じ、プロパティ名とカラム名は同じ、等)か
       ら外れる場合のみ設定すれば良い。



12/04/18       Beginning JavaEE6 勉強会(1)   25
シンプルなBookエンティティ
              永続性プロバイダに認識させるため
                  のアノテーション
@Entity
public class Book {
  @Id                         主キーの指定
   @GeneratedValue
  private Long id;
  @Column(nullable = false)         カラムの属性指定
  private String title;
  private Float price;
  @Column(length = 2000)
  private String description;
  private String isbn;
  private Integer nbOfPage;
  private Boolean illustrations;
  // 以下セッター・ゲッター略
}



12/04/18           Beginning JavaEE6 勉強会(1)    26
エンティティとテーブルのマッピング




      <<エンティティ>>                                             Book
          Book
                                         +ID             bigint          nullable=false
   -id: Long                             TITLE           varchar(255)    nullable=false
   -title: String                        PRICE           double          nullable=true
   -price: Float                         DESCRIPTION     varchar(2000)   nullable=true
   -description: String                  ISBN            varchar(255)    nullable=true
   -isbn: String                         NBOFPAGE        integer         nullable=true
   -nbOfPage: Integer                    ILLUSTRATIONS   smallint        nullable=true
   -illustrations: Boolean




12/04/18                     Beginning JavaEE6 勉強会(1)                                     27
2.2.2 エンティティのクエリ
• エンティティを操作するAPIが用意されている
• エンティティマネージャが中心に
• CRUD操作やJPQLによる複雑なクエリ

EntityManagerFactory emf = Persistence
     .createEntityManagerFactory("chapter02PU");
EntityManager em = emf.createEntityManager();
em.persist(book);



• INSERT文やSELECT文を明示的に記述しなくても
  SQLが発行される


12/04/18                 Beginning JavaEE6 勉強会(1)   28
エンティティマネージャによる操作

                      <<インタフェース>>
     Main               EntityManager
                                                       DB
            +persist(entity: Object): void
            +find(entityClass: Class<T>, primaryKey:
            Object): <T>



                                Book
                      -id: Long
                      -title: String
                      -price: Float
                      -description: String
                      -isbn: String
                      -nbOfPage: Integer
                      -illustrations: Boolean


12/04/18            Beginning JavaEE6 勉強会(1)                29
JPQL
• エンティティに対するクエリ言語
• SQLに似ているが少し異なる
“SELECT b FROM Book b WHERE b.title = „HOGE‟"

• 動的クエリ(実行時に生成)、静的クエリ(コンパイル時
  に決定)、ネイティブクエリ(SQL)
• 静的クエリは名前付きで設定できる
@Entity
@NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b")
public class Book {

• createNamedQueryでクエリ取得
Query query = em.createNamedQuery(”findAllBooks");

12/04/18                Beginning JavaEE6 勉強会(1)                     30
2.2.3 コールバックとリスナ
• エンティティはPOJO
     – newした段階ではメモリ内に存在するだけで、エン
       ティティマネージャに認識されない
     – EntityManager#persistでエンティティを管理対象
       にし永続化する
     – エンティティマネージャがエンティティを管理する
       場合は、エンティティに永続IDを設定してデータ
       ベースと同期する
     – エンティティマネージャから分離され、管理外に
       なった場合は普通のJavaオブジェクト
     – EntityManager#removeを実行するとデータベースか
       ら削除され、管理対象外になるが、GCが発生するま
       でメモリ内に残る

12/04/18       Beginning JavaEE6 勉強会(1)   31
エンティティのライフサイクル

                    new                 GC

                          メモリ内に存
             find            在
             JPQL
                                  persist
              merge                      remove
      分離状態                 管理状態                   削除済み状態
              clear
              detach
                                  refresh
                                  setter

             データベース



12/04/18              Beginning JavaEE6 勉強会(1)             32
コールバックとリスナ
• エンティティで特定のライフサイクルイベント
  が発生したときの処理(コールバック)を定義で
  きる
• エンティティクラスに直接コールバックを記述
  できるし、リスナクラスに外出しすることも可
  能(@EntityListeners)
• 5章で!




12/04/18   Beginning JavaEE6 勉強会(1)   33
コールバックアノテーション

                   new                   GC

                          メモリ内に存
                             在
           @PostLoad
                                   @PreLoad
             @PostLoad             @PostLoad
                                      @PreRemove
      分離状態                  管理状態                   削除済み状態

             @PreUpdate
             @PostUpdate           @PreUpdate
                                   @PostUpdate
                                   @PostLoad
              データベース



12/04/18               Beginning JavaEE6 勉強会(1)             34
ハンズオン演習



12/04/18   Beginning JavaEE6 勉強会(1)   35
ハンズオン演習
• NetBeansとDerbyを使用してJPAアプリケーショ
  ンを作成
     – http://ja.netbeans.org/
     – 実行されたSQLが分かりやすいようにSQLログが出力
       されるように設定されています
           • 参考 http://bit.ly/log4jdbc
• ハンズオンプロジェクト
     – https://www.dropbox.com/sh/1axggidrrjz3rnb/OiM
       plS6LJW/beginning-javaee6




12/04/18                Beginning JavaEE6 勉強会(1)    36
プロジェクトを開く




12/04/18   Beginning JavaEE6 勉強会(1)   37
練習1) エンティティクラスの作成

@Entity
@NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b")
public class Book {
  @Id
  @GeneratedValue
  private Long id;
  @Column(nullable = false)
  private String title;
  private Float price;
  @Column(length = 2000)
  private String description;
  private String isbn;
  private Integer nbOfPage;
  private Boolean illustrations;
  // 以下セッター・ゲッター略
}


12/04/18               Beginning JavaEE6 勉強会(1)                      38
練習2) エンティティの生成

Book book = new Book();
book.setTitle("The Hitchhiker's Guide to the Galaxy");
book.setPrice(12.5F);
book.setDescription("Science fiction comedy series created by Douglas
Adams.");
book.setIsbn("1-84023-742-2");
book.setNbOfPage(354);
book.setIllustrations(false);




12/04/18                  Beginning JavaEE6 勉強会(1)                      39
練習3) エンティティの永続化

EntityManagerFactory emf =
Persistence.createEntityManagerFactory("chapter02PU");
EntityManager em = emf.createEntityManager();




12/04/18                 Beginning JavaEE6 勉強会(1)        40
練習4) エンティティの永続化
• persistメソッドで永続化します
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(book);
tx.commit();

em.close();
emf.close();




12/04/18                   Beginning JavaEE6 勉強会(1)   41
mainメソッドを実行する前に
• Derbyを起動する(接続情報は
  src/resources/META-INF/persistence.xml)



• 「ウィンドウ」→「サービス」→「データベー
  ス」→「Java DB」→「データベースを作成」




12/04/18       Beginning JavaEE6 勉強会(1)     42
実行
• mainクラスで右クリック→「ファイルを実行」




• 「java.sql.SQLException: Table/View
  ‘SEQUENCE’ は、既に Schema ‘APP’ に存
  在します。」なエラーログは無視



12/04/18    Beginning JavaEE6 勉強会(1)   43
演習
• 演習1) 練習で永続化したオブジェクトを更新してくだ
  さい。
• 演習2)演習1)で更新する前にflush()する場合、しない
  場合とどう違うでしょうか。
• 演習3) 演習1)のエンティティを削除してください。
  (削除前にflushしてください
• 演習4) エンティティを100個登録してください。SQLは
  どのタイミング発行されましたか。(persistの後に
  printlnを入れてみてください)
• 演習5) “findAllBooks”のNamedQueryを実行し、結果
  をListで取得してください。
• 演習6) 管理済みエンティティを主キー(ID=1など)で一
  件のみ取得してください。ただし登録後にはflush()し
  てください。
• 演習7) 演習6)でflush後にclear()する場合、しない場
  合と比べてどう違うでしょうか。

12/04/18     Beginning JavaEE6 勉強会(1)   44

More Related Content

What's hot

fetch APIを安全に使う方法をおさらいしてみよう
fetch APIを安全に使う方法をおさらいしてみようfetch APIを安全に使う方法をおさらいしてみよう
fetch APIを安全に使う方法をおさらいしてみようiPride Co., Ltd.
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugYuji Kubota
 
ユーザに価値を届けるためのデータプラットフォームの考え方
ユーザに価値を届けるためのデータプラットフォームの考え方ユーザに価値を届けるためのデータプラットフォームの考え方
ユーザに価値を届けるためのデータプラットフォームの考え方Rakuten Group, Inc.
 
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・Yoshie Kaneno
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)Masatoshi Tada
 
Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜eiryu
 
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure PipelinesAzure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure PipelinesKazushi Kamegawa
 
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021株式会社MonotaRO Tech Team
 
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf株式会社MonotaRO Tech Team
 
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)Yugo Shimizu
 
DXのための内製化のススメ
DXのための内製化のススメDXのための内製化のススメ
DXのための内製化のススメDaiyu Hatakeyama
 
LibreOffice API について
LibreOffice API についてLibreOffice API について
LibreOffice API について健一 辰濱
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
カネとAgile(大企業新規事業編) #rsgt2021
カネとAgile(大企業新規事業編) #rsgt2021カネとAgile(大企業新規事業編) #rsgt2021
カネとAgile(大企業新規事業編) #rsgt2021Itsuki Kuroda
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるpospome
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 

What's hot (20)

fetch APIを安全に使う方法をおさらいしてみよう
fetch APIを安全に使う方法をおさらいしてみようfetch APIを安全に使う方法をおさらいしてみよう
fetch APIを安全に使う方法をおさらいしてみよう
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
ユーザに価値を届けるためのデータプラットフォームの考え方
ユーザに価値を届けるためのデータプラットフォームの考え方ユーザに価値を届けるためのデータプラットフォームの考え方
ユーザに価値を届けるためのデータプラットフォームの考え方
 
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
 
GraphQL入門
GraphQL入門GraphQL入門
GraphQL入門
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
 
Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜Javaでのバリデーション 〜Bean Validation篇〜
Javaでのバリデーション 〜Bean Validation篇〜
 
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure PipelinesAzure DevOps Online Vol.3 - Inside Azure Pipelines
Azure DevOps Online Vol.3 - Inside Azure Pipelines
 
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
 
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
 
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)
情報の伝え方が変わる!Power BIでレポートを作ってみよう(前半戦)
 
DXのための内製化のススメ
DXのための内製化のススメDXのための内製化のススメ
DXのための内製化のススメ
 
LibreOffice API について
LibreOffice API についてLibreOffice API について
LibreOffice API について
 
ミリシタを支える GAE/Go
ミリシタを支える GAE/Goミリシタを支える GAE/Go
ミリシタを支える GAE/Go
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
カネとAgile(大企業新規事業編) #rsgt2021
カネとAgile(大企業新規事業編) #rsgt2021カネとAgile(大企業新規事業編) #rsgt2021
カネとAgile(大企業新規事業編) #rsgt2021
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 

Viewers also liked

Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyikeyat
 
Beginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyBeginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyMasato Kawamura
 
Java女子部 Java EEハンズオン(応用編)
Java女子部 Java EEハンズオン(応用編)Java女子部 Java EEハンズオン(応用編)
Java女子部 Java EEハンズオン(応用編)Misaki Kajiura
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門minazou67
 
Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Takakiyo Tanaka
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyGeorge Okada
 
Beginning Java EE 6 勉強会(3) #bje_study
Beginning Java EE 6 勉強会(3) #bje_studyBeginning Java EE 6 勉強会(3) #bje_study
Beginning Java EE 6 勉強会(3) #bje_studyinatus
 
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyBeginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyKinji Akemine
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPAkawaba
 
EJB3 ABC
EJB3 ABCEJB3 ABC
EJB3 ABCbose999
 
JavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトークJavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトークTakuya Sato
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。Tomohiko Himura
 
Beginning Java EE 6 勉強会(5) #bje_study
Beginning Java EE 6 勉強会(5) #bje_studyBeginning Java EE 6 勉強会(5) #bje_study
Beginning Java EE 6 勉強会(5) #bje_studyzuisener .
 
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6Rakuten Group, Inc.
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発Takakiyo Tanaka
 
20150829 Java女子部勉強会 Java EEハンズオン
20150829 Java女子部勉強会 Java EEハンズオン20150829 Java女子部勉強会 Java EEハンズオン
20150829 Java女子部勉強会 Java EEハンズオンMisaki Kajiura
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能kimulla
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?kwatch
 

Viewers also liked (20)

Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_study
 
Beginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyBeginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_study
 
Java女子部 Java EEハンズオン(応用編)
Java女子部 Java EEハンズオン(応用編)Java女子部 Java EEハンズオン(応用編)
Java女子部 Java EEハンズオン(応用編)
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_study
 
Beginning Java EE 6 勉強会(3) #bje_study
Beginning Java EE 6 勉強会(3) #bje_studyBeginning Java EE 6 勉強会(3) #bje_study
Beginning Java EE 6 勉強会(3) #bje_study
 
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_studyBeginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_study
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPA
 
EJB3 ABC
EJB3 ABCEJB3 ABC
EJB3 ABC
 
JavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトークJavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトーク
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
 
Slick入門
Slick入門Slick入門
Slick入門
 
Beginning Java EE 6 勉強会(5) #bje_study
Beginning Java EE 6 勉強会(5) #bje_studyBeginning Java EE 6 勉強会(5) #bje_study
Beginning Java EE 6 勉強会(5) #bje_study
 
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発
 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
 
20150829 Java女子部勉強会 Java EEハンズオン
20150829 Java女子部勉強会 Java EEハンズオン20150829 Java女子部勉強会 Java EEハンズオン
20150829 Java女子部勉強会 Java EEハンズオン
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 

Similar to Beginning Java EE 6 勉強会(1) #bje_study

今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427Nobuhiro Sue
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionYoshio Terada
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2nekop
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3nekop
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門minazou67
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7TakumiIINO
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpToshiaki Maki
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Masatoshi Tada
 
2011年javaの旅
2011年javaの旅2011年javaの旅
2011年javaの旅torutk
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSatoshi Kisanuki
 
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)torutk
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7nekop
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Hiroshi Hayakawa
 

Similar to Beginning Java EE 6 勉強会(1) #bje_study (20)

今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 Introduction
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjp
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 
2011年javaの旅
2011年javaの旅2011年javaの旅
2011年javaの旅
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
 
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7
 
Springの向かう先
Springの向かう先Springの向かう先
Springの向かう先
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
 

More from Toshiaki Maki

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugToshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoToshiaki Maki
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tToshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerToshiaki Maki
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpToshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoToshiaki Maki
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootToshiaki Maki
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jpToshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07Toshiaki Maki
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsugToshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugToshiaki Maki
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Toshiaki Maki
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIToshiaki Maki
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...Toshiaki Maki
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoToshiaki Maki
 

More from Toshiaki Maki (20)

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
 

Recently uploaded

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Beginning Java EE 6 勉強会(1) #bje_study

  • 1. Beginning Java EE 6 勉強会(1) -Java EE 6概要- 担当者:@making Toshiaki Maki 2012/04/18
  • 2. はじめに - Java EE 6勉強会の進め方 • 隔週水曜日に各要素技術をそれぞれ扱います – 座学+ハンズオン形式 – 資料は業務外時間に作成し、原則SlideShareにアッ プします • 概要 4/18 @making • JPA 4/25 @kjstylepp • EJB 5/9 @inatus • JSF 5/23 @XXX • JMS 6/6 @XXX • JAX-WS 6/20 @masato_ka • JAX-RS 6/27 講師募集中 12/04/18 Beginning JavaEE6 勉強会(1) 2
  • 4. 目次 1. Java EE 6の概要 2. Javaと永続化 12/04/18 Beginning JavaEE6 勉強会(1) 4
  • 5. 第1章 Java EE 6の概要 12/04/18 Beginning JavaEE6 勉強会(1) 5
  • 6. 本論に入る前に質問 • 次のうち正しい組み合わせを全て選びなさい 1. J2SE 1.4 – J2EE 1.4 2. J2SE 1.5 – J2EE 1.5 ggrks 3. Java SE 1.5 – Java EE 5 4. Java SE 5 - Java EE 5 5. Java SE 1.6 – Java EE 6 6. Java SE 6 – Java EE 6 7. Java SE 7 – Java EE 6 12/04/18 Beginning JavaEE6 勉強会(1) 6
  • 7. Java EE 6の概要 • 内部アーキテクチャ • Java EE 6で新しくなった点 12/04/18 Beginning JavaEE6 勉強会(1) 7
  • 8. 1.1 Java EE とは • Java Enterprise Edition • Javaで(主に)Webアプリケーションを構築するための 数々の仕様、およびその実装です。 – Servlet、JSP、EJB、JPAとか • Java EEの仕様を満たした機能を提供するアプリケー ションサーバをJava EEアプリケーションサーバと呼ぶ。 – GlassFish(Oracle) – WebLogic Server(Oracle) – WebSphere Application Server(IBM) – JBoss Application Server (Redhat) – Cosminexus (Hitachi) – Interstage (Fujitsu) – WebOTX (NEC) – Geronimo (Apache) • 同じアプリケーションならどのサーバでもが動く(は ず、、) • Tomcatはただのサーブレットコンテナです 12/04/18 Beginning JavaEE6 勉強会(1) 8
  • 9. 1.1.1 Java EE 6の歴史 Flexible Ease of Development Java EE 6 Web Services Pruning,Pro Rubustness Enterprise files,EJB Application J2EE 1.4 Java EE 5 Lite,JAX- RS,CDI Web Annotation J2EE 1.2 J2EE 1.3 Services, s,EJB3.0,JPA Manageme ,JAX-WS,JSF Servlet,JSP, EJB CMP, nt,Deploym Web Profile EJB,JMS, JCA ent Project JPE RMI/IIOP Managed Bean May 1998 Dec 1999 Sep 2001 Nov 2003 May 2006 Dec 2009 12/04/18 Beginning JavaEE6 勉強会(1) 9
  • 10. Java EE 6の全体像 http://www.slideshare.net/takakiyo/jjuc-ccc-2010-spring より拝借 12/04/18 Beginning JavaEE6 勉強会(1) 10
  • 11. ざっくり分類 • プレゼンテーション層→JSF • トランザクション層→EJB • データアクセス層→JPA • DI、コンポーネント管理→CDI • メッセージング→JMS • WEBサービス→JAX-WS、JAX-RS 12/04/18 Beginning JavaEE6 勉強会(1) 11
  • 12. 1.2 Java EE 6の新しいキーワード • さらなる開発容易性向上 – 5で大きく変わり、EJB、永続エンティティ、Web サービスがアノテーションベースに – 6ではJSFのマネージドBeanがアノテーションベース になり、XMLディスクリプタも不要に – Servlet3.0やCDI(Contexts and Dependency Injection)、Bean Validation…金魚本には載って いません • 古い技術のプルーニング • 新しい仕様の追加 12/04/18 Beginning JavaEE6 勉強会(1) 12
  • 13. 1.2.1 軽量化 • プルーニング – EJB 2.X CMP エンティティBean (JSR318) • JPAへ – JAX-RPC (JSR101) • JAX-WSへ – JAXR (JSR93) – Java EE アプリケーション・デプロイ (JSR88) • プロフィル – Java EEのサブセット or スーパーセットの提供 – Webプロファイル • Servlet 3.0, JSP 2.2, EJB Lite 3.1, JPA 2.0, JSF 2.2 等 12/04/18 Beginning JavaEE6 勉強会(1) 13
  • 14. プロファイル • Java EEのサブセットをプロファイルとして定 義可能 – Java EEコンテナが特定のプロファイルだけ実装し てもよい – WAS8.5ではより軽量なLiberty Profileを提供 Java EE Full Profile Web Profile 12/04/18 Beginning JavaEE6 勉強会(1) 14
  • 15. 1.2.2 操作性の向上 • JSFやServletの設定が簡単に • アノテーションの導入でXMLファイル(faces- config.xml、web.xml)への設定がかなり省略可 import javax.ejb.EJB; import javax.faces.bean.ManagedBean; @ManagedBean faces-config.xmlの public class BookController { <managed-bean>タグ内に @EJB 記述していた情報がアノ private BookEJB bookEJB; テーションで表現可能に。 private Book book = new Book(); (CDIを使うと@Namedで private List<Book> bookList; OK) public String doCreateBook() { book = bookEJB.createBook(book); bookList = bookEJB.findBooks(); return "listBooks.xhtml"; } } 12/04/18 Beginning JavaEE6 勉強会(1) 15
  • 16. 1.2.3 豊富な機能 • JAX-RSでREST対応! • JPA2.0でデータベース操作がより柔軟に • EJB3.1でSingleton Session Bean(アプリで唯一のインスタンス) import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path("books") public class BookResource { @PersistenceContext private EntityManager em; @GET @Produces({"application/xml", "application/json"}) public List<Book> getAllBooks() { Query query = em.createNamedQuery("findAllBooks"); List<Book> books = query.getResultList(); return books; } } 12/04/18 Beginning JavaEE6 勉強会(1) 16
  • 17. 1.2.4 移植性の向上 • JNDI名が標準化され、どのコンテナでも同じア プリをデプロイできるようになった – これまではベンダ毎(GlassFish、JBoss、WebLogic) が独自に設定していたため、他製品へ移行する際に JNDI名を変更する必要があった • 組み込みコンテナが標準APIで用意され、 JavaSEでEJBの単体テストが簡単に行えるよう になった – EJBContaioner container = EJBContainer.createEJBContainer(p); – Hello hello = (Hello) container.getContext().lookup(“java:global/cl asses/Hello”); • 7章で! 12/04/18 Beginning JavaEE6 勉強会(1) 17
  • 18. 第2章 Javaと永続化 12/04/18 Beginning JavaEE6 勉強会(1) 18
  • 19. Javaと永続化 • データの永続化 – 通常はリレーショナルデータベースに永続化 – リレーショナルデータベースとJavaオブジェクト • 主キー・外部キー・テーブル結合などオブジェクト指向言語 とはまったく異なる表現 • Javaオブジェクトの永続化の方法 – シリアライゼーションによる永続化 • java.io.Serializableインタフェース • シンプルな機構であり、クエリ言語など機能が十分でない – リレーショナルデータベースによる永続化 • Java Database Connectivity(JDBC)によるアクセス • オブジェクト・リレーショナル・マッピング(ORM) – Hibernate – TopLink – Java Data Objects(JDO) – ◎Java Persistence API(JPA) 12/04/18 Beginning JavaEE6 勉強会(1) 19
  • 20. 2.1 JPA仕様の概要 • JavaEE5でJPA1.0が登場 • JPAはJDBCの上位の抽象層 • javax.persistenceパッケージ • コンポーネント構成 – ORM – エンティティマネージャ – Java Persistence Query Language – トランザクションとロック – コールバックとリスナ 詳しくは3-5章で! 12/04/18 Beginning JavaEE6 勉強会(1) 20
  • 21. 2.1.1 仕様の歴史 • TopLink – 1990年代初期からsmalltalk用に開発 – Javaでも利用可能 – しばらく標準化されず • JDO – 市場に浸透せず • 初期EJB – EJB1.0(1998) • Entity Container Managed Persistence(CMP)という重量級コンポーネントモデル – EJB1.1 • J2EE1.2の一部にEJB2.1 • CMP強化 • Hibernate – 軽量のオブジェクト指向永続性モデル – オープンソースで成功 • JPA1.0 – Hibernateの多くの設計原理を導入 – EJB3.0(JSR220)の一部に – JavaEE5に • JPA2.0 – JSR317 – JavaEE6に 12/04/18 Beginning JavaEE6 勉強会(1) 21
  • 22. 2.1.2 JPA2.0の新機能 • 単純データ型(String,Integerなど)のコレク ションと組み込み可能オブジェクトの個別テー ブルマッピング • Map型対応 • 楽観的ロックに加え、悲観的ロックのサポート • Criteria API導入 • JPQL拡張(case文など) • キャッシングAPI など(詳しくは3-5章で!) 12/04/18 Beginning JavaEE6 勉強会(1) 22
  • 23. 2.1.3 参照実装 • Eclipse Link 2.0 – Oracle社からEclipse Foundation寄贈されたOracle TopLinkを基盤として開発 • その他の実装では – Hibernate – Toplink – OpenJPA – DataNucleus • 以後、永続性プロバイダまたはプロバイダと呼 ぶ 12/04/18 Beginning JavaEE6 勉強会(1) 23
  • 24. 2.2 エンティティ • オブジェクト エンティティ • オブジェクトはメモリ内にのみ存在する概念 • エンティティはメモリ+データベース永続化さ れるオブジェクト • 具象型でも抽象型でもOK – 継承・リレーションシップのサポート • JPQLに問い合わせ • データベースにアクセスしていることを意識し ない 12/04/18 Beginning JavaEE6 勉強会(1) 24
  • 25. 2.2.1 オブジェクトリレーショナルマッピング • 永続化プロバイダがエンティティを認識し、 マッピングを解釈できるように次の2つの形式 で記述 – アノテーション:エンティティのコードにアノテー ション(javax.persistenceパッケージ)を記述 – XMLディスクリプタ:マッピングを外部XMLファイル に定義 • Configuration by exceptionの考え方 – デフォルトのマッピング規則(クラス名とテーブル 名は同じ、プロパティ名とカラム名は同じ、等)か ら外れる場合のみ設定すれば良い。 12/04/18 Beginning JavaEE6 勉強会(1) 25
  • 26. シンプルなBookエンティティ 永続性プロバイダに認識させるため のアノテーション @Entity public class Book { @Id 主キーの指定 @GeneratedValue private Long id; @Column(nullable = false) カラムの属性指定 private String title; private Float price; @Column(length = 2000) private String description; private String isbn; private Integer nbOfPage; private Boolean illustrations; // 以下セッター・ゲッター略 } 12/04/18 Beginning JavaEE6 勉強会(1) 26
  • 27. エンティティとテーブルのマッピング <<エンティティ>> Book Book +ID bigint nullable=false -id: Long TITLE varchar(255) nullable=false -title: String PRICE double nullable=true -price: Float DESCRIPTION varchar(2000) nullable=true -description: String ISBN varchar(255) nullable=true -isbn: String NBOFPAGE integer nullable=true -nbOfPage: Integer ILLUSTRATIONS smallint nullable=true -illustrations: Boolean 12/04/18 Beginning JavaEE6 勉強会(1) 27
  • 28. 2.2.2 エンティティのクエリ • エンティティを操作するAPIが用意されている • エンティティマネージャが中心に • CRUD操作やJPQLによる複雑なクエリ EntityManagerFactory emf = Persistence .createEntityManagerFactory("chapter02PU"); EntityManager em = emf.createEntityManager(); em.persist(book); • INSERT文やSELECT文を明示的に記述しなくても SQLが発行される 12/04/18 Beginning JavaEE6 勉強会(1) 28
  • 29. エンティティマネージャによる操作 <<インタフェース>> Main EntityManager DB +persist(entity: Object): void +find(entityClass: Class<T>, primaryKey: Object): <T> Book -id: Long -title: String -price: Float -description: String -isbn: String -nbOfPage: Integer -illustrations: Boolean 12/04/18 Beginning JavaEE6 勉強会(1) 29
  • 30. JPQL • エンティティに対するクエリ言語 • SQLに似ているが少し異なる “SELECT b FROM Book b WHERE b.title = „HOGE‟" • 動的クエリ(実行時に生成)、静的クエリ(コンパイル時 に決定)、ネイティブクエリ(SQL) • 静的クエリは名前付きで設定できる @Entity @NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b") public class Book { • createNamedQueryでクエリ取得 Query query = em.createNamedQuery(”findAllBooks"); 12/04/18 Beginning JavaEE6 勉強会(1) 30
  • 31. 2.2.3 コールバックとリスナ • エンティティはPOJO – newした段階ではメモリ内に存在するだけで、エン ティティマネージャに認識されない – EntityManager#persistでエンティティを管理対象 にし永続化する – エンティティマネージャがエンティティを管理する 場合は、エンティティに永続IDを設定してデータ ベースと同期する – エンティティマネージャから分離され、管理外に なった場合は普通のJavaオブジェクト – EntityManager#removeを実行するとデータベースか ら削除され、管理対象外になるが、GCが発生するま でメモリ内に残る 12/04/18 Beginning JavaEE6 勉強会(1) 31
  • 32. エンティティのライフサイクル new GC メモリ内に存 find 在 JPQL persist merge remove 分離状態 管理状態 削除済み状態 clear detach refresh setter データベース 12/04/18 Beginning JavaEE6 勉強会(1) 32
  • 33. コールバックとリスナ • エンティティで特定のライフサイクルイベント が発生したときの処理(コールバック)を定義で きる • エンティティクラスに直接コールバックを記述 できるし、リスナクラスに外出しすることも可 能(@EntityListeners) • 5章で! 12/04/18 Beginning JavaEE6 勉強会(1) 33
  • 34. コールバックアノテーション new GC メモリ内に存 在 @PostLoad @PreLoad @PostLoad @PostLoad @PreRemove 分離状態 管理状態 削除済み状態 @PreUpdate @PostUpdate @PreUpdate @PostUpdate @PostLoad データベース 12/04/18 Beginning JavaEE6 勉強会(1) 34
  • 35. ハンズオン演習 12/04/18 Beginning JavaEE6 勉強会(1) 35
  • 36. ハンズオン演習 • NetBeansとDerbyを使用してJPAアプリケーショ ンを作成 – http://ja.netbeans.org/ – 実行されたSQLが分かりやすいようにSQLログが出力 されるように設定されています • 参考 http://bit.ly/log4jdbc • ハンズオンプロジェクト – https://www.dropbox.com/sh/1axggidrrjz3rnb/OiM plS6LJW/beginning-javaee6 12/04/18 Beginning JavaEE6 勉強会(1) 36
  • 37. プロジェクトを開く 12/04/18 Beginning JavaEE6 勉強会(1) 37
  • 38. 練習1) エンティティクラスの作成 @Entity @NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b") public class Book { @Id @GeneratedValue private Long id; @Column(nullable = false) private String title; private Float price; @Column(length = 2000) private String description; private String isbn; private Integer nbOfPage; private Boolean illustrations; // 以下セッター・ゲッター略 } 12/04/18 Beginning JavaEE6 勉強会(1) 38
  • 39. 練習2) エンティティの生成 Book book = new Book(); book.setTitle("The Hitchhiker's Guide to the Galaxy"); book.setPrice(12.5F); book.setDescription("Science fiction comedy series created by Douglas Adams."); book.setIsbn("1-84023-742-2"); book.setNbOfPage(354); book.setIllustrations(false); 12/04/18 Beginning JavaEE6 勉強会(1) 39
  • 40. 練習3) エンティティの永続化 EntityManagerFactory emf = Persistence.createEntityManagerFactory("chapter02PU"); EntityManager em = emf.createEntityManager(); 12/04/18 Beginning JavaEE6 勉強会(1) 40
  • 41. 練習4) エンティティの永続化 • persistメソッドで永続化します EntityTransaction tx = em.getTransaction(); tx.begin(); em.persist(book); tx.commit(); em.close(); emf.close(); 12/04/18 Beginning JavaEE6 勉強会(1) 41
  • 42. mainメソッドを実行する前に • Derbyを起動する(接続情報は src/resources/META-INF/persistence.xml) • 「ウィンドウ」→「サービス」→「データベー ス」→「Java DB」→「データベースを作成」 12/04/18 Beginning JavaEE6 勉強会(1) 42
  • 43. 実行 • mainクラスで右クリック→「ファイルを実行」 • 「java.sql.SQLException: Table/View ‘SEQUENCE’ は、既に Schema ‘APP’ に存 在します。」なエラーログは無視 12/04/18 Beginning JavaEE6 勉強会(1) 43
  • 44. 演習 • 演習1) 練習で永続化したオブジェクトを更新してくだ さい。 • 演習2)演習1)で更新する前にflush()する場合、しない 場合とどう違うでしょうか。 • 演習3) 演習1)のエンティティを削除してください。 (削除前にflushしてください • 演習4) エンティティを100個登録してください。SQLは どのタイミング発行されましたか。(persistの後に printlnを入れてみてください) • 演習5) “findAllBooks”のNamedQueryを実行し、結果 をListで取得してください。 • 演習6) 管理済みエンティティを主キー(ID=1など)で一 件のみ取得してください。ただし登録後にはflush()し てください。 • 演習7) 演習6)でflush後にclear()する場合、しない場 合と比べてどう違うでしょうか。 12/04/18 Beginning JavaEE6 勉強会(1) 44