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

GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編まべ☆てっく運営
 
JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発Masuji Katoda
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51Takakiyo Tanaka
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応歩 柴田
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかYoshitaka Kawashima
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 

What's hot (20)

GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
Quarkus入門
Quarkus入門Quarkus入門
Quarkus入門
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
 
JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発JSF2.2で簡単webアプリケーション開発
JSF2.2で簡単webアプリケーション開発
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
Metaspace
MetaspaceMetaspace
Metaspace
 
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51
Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン #jjug_ccc #ccc_r51
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
Spring AMQP × RabbitMQ
Spring AMQP × RabbitMQSpring AMQP × RabbitMQ
Spring AMQP × RabbitMQ
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 

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

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

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