Enviar búsqueda
Cargar
Gaej Jdo
•
Descargar como PPT, PDF
•
2 recomendaciones
•
1,056 vistas
K
katsu.taira
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 26
Descargar ahora
Recomendados
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
OpenFlowコントローラ開発支援ツールの提案
OpenFlowコントローラ開発支援ツールの提案
Yutaka Yasuda
BDD by Jasmine (jscafe 13)
BDD by Jasmine (jscafe 13)
Ryuma Tsukano
Qunit再入門 (Version 1.10.0 編)
Qunit再入門 (Version 1.10.0 編)
Koji Nakamura
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
わかるコードを書くために For writing clean code
わかるコードを書くために For writing clean code
Eyes, JAPAN
Recomendados
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
OpenFlowコントローラ開発支援ツールの提案
OpenFlowコントローラ開発支援ツールの提案
Yutaka Yasuda
BDD by Jasmine (jscafe 13)
BDD by Jasmine (jscafe 13)
Ryuma Tsukano
Qunit再入門 (Version 1.10.0 編)
Qunit再入門 (Version 1.10.0 編)
Koji Nakamura
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
わかるコードを書くために For writing clean code
わかるコードを書くために For writing clean code
Eyes, JAPAN
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)
Nobuhiro Sue
負荷テストことはじめ
負荷テストことはじめ
Kazumune Katagiri
LINQソースでGO!
LINQソースでGO!
Kouji Matsui
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
Takeru INOUE
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
OpenStack Study#9 JOSUG
OpenStack Study#9 JOSUG
Hideki Saito
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
PFDS 11.2 catenable double ended queue
PFDS 11.2 catenable double ended queue
昌平 村山
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
Hisashi Aruji
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
PerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
Masatoshi Tada
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
啓 小笠原
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
Yukiko Kato
HTMLの要素の選び方
HTMLの要素の選び方
TENTO_slide
Development app-with-elixir
Development app-with-elixir
k1complete
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Más contenido relacionado
La actualidad más candente
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)
Nobuhiro Sue
負荷テストことはじめ
負荷テストことはじめ
Kazumune Katagiri
LINQソースでGO!
LINQソースでGO!
Kouji Matsui
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
Takeru INOUE
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
OpenStack Study#9 JOSUG
OpenStack Study#9 JOSUG
Hideki Saito
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
PFDS 11.2 catenable double ended queue
PFDS 11.2 catenable double ended queue
昌平 村山
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
Hisashi Aruji
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
PerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
Masatoshi Tada
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
啓 小笠原
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
Yukiko Kato
HTMLの要素の選び方
HTMLの要素の選び方
TENTO_slide
Development app-with-elixir
Development app-with-elixir
k1complete
La actualidad más candente
(20)
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)
負荷テストことはじめ
負荷テストことはじめ
LINQソースでGO!
LINQソースでGO!
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張
OpenStack Study#9 JOSUG
OpenStack Study#9 JOSUG
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
PFDS 11.2 catenable double ended queue
PFDS 11.2 catenable double ended queue
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to Objects
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
PerlとSQLのいろいろ
PerlとSQLのいろいろ
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
HTMLの要素の選び方
HTMLの要素の選び方
Development app-with-elixir
Development app-with-elixir
Similar a Gaej Jdo
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
Fujio Kojima
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
kunihikokaneko1
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
Fujio Kojima
Project lambda
Project lambda
Appresso Engineering Team
Teclab3
Teclab3
Eikichi Yamaguchi
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
Reladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjug
Hiroshi Ito
Java EE8 Report
Java EE8 Report
Norito Agetsuma
GDG DevFest 2020 Android data linkage info
GDG DevFest 2020 Android data linkage info
tsutomuhayakawa
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
Ajax 応用
Ajax 応用
Katsuyuki Seino
ADRという考えを取り入れてみて
ADRという考えを取り入れてみて
infinite_loop
第2回デザインパターン資料
第2回デザインパターン資料
gaaupp
はじめてのPowerShell
はじめてのPowerShell
Trainocate Japan, Ltd.
20180123 power shell
20180123 power shell
Trainocate Japan, Ltd.
Django Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作る
Matsuo Keita
Similar a Gaej Jdo
(20)
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
Project lambda
Project lambda
Teclab3
Teclab3
明日から使える Java SE 7
明日から使える Java SE 7
Reladomo入門 JJUGナイトセミナー #jjug
Reladomo入門 JJUGナイトセミナー #jjug
Java EE8 Report
Java EE8 Report
GDG DevFest 2020 Android data linkage info
GDG DevFest 2020 Android data linkage info
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Ajax 応用
Ajax 応用
ADRという考えを取り入れてみて
ADRという考えを取り入れてみて
第2回デザインパターン資料
第2回デザインパターン資料
はじめてのPowerShell
はじめてのPowerShell
20180123 power shell
20180123 power shell
Django Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作る
Último
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Último
(9)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Gaej Jdo
1.
App Engine for
Java の JDO 使用上の考慮点 (株)ケーピーエス 平 克介
2.
目次
RDB から JDO への実装の変更概要 今回トライした例について JDO の基本 考慮点 – Transaction 考慮点 – 関連 考慮点 – PersistenceManager 考慮点 – Index 参考:基本情報技術者試験 午前問題特訓システム
3.
KPS フレームワークの機能
クライアントから直接擬似 HibernateAPI を操作 ORM オブジェクトを検索、更新、作成、削除 クライアントからサーバー側 Sesar2 コンポーネン トの呼び出し Gxt GUI 画面デザインツール D-RexGxt Hibernate 部分を JDO へ入れ替え Criteria を Query 集計処理部分の へ変更 変更
4.
JDO への移行
サーバー側の ORM アクセス部分の変更 Hibernate から JDO へ フレームワーク側の変更 クライアント側検索 API の変更 Criteria から Query へ フレームワークおよびクライアントコードの変更 集計処理部分の変更 集計処理を行っている Seaser2 コンポーネントの 変更
5.
JDO の基本1
JDO とは Java 標準のデータの永続化・検索機能を提供す る API JDO の ORM クラス( GAE では kind と呼 ぶ) @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Employee { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private String firstName; @Persistent private String lastName; この下に constructor : getter/setter が続く
6.
JDO の基本 2
Object(entity) を永続化する PersistenceManager pm = PMF.get().getPersistenceManager(); Employee e = new Employee("Alfred", "Smith", new Date()); try { pm.makePersistent(e); } finally { pm.close(); } :
7.
JDO の基本 3
Object の更新 PersistenceManager pm = PMF.get().getPersistenceManager(); try { Employee e = pm.getObjectById(Employee.class, 1); e.setTitle(newTitle); } finally { pm.close(); } : Object の削除 pm.deletePersistent(e); :
8.
JDO の基本 4
Object の検索 Query query = pm.newQuery(Employee.class); query.setFilter("lastName == lastNameParam"); query.setOrdering("hireDate desc"); query.declareParameters("String lastNameParam"); try { List<Employee> results = (List<Employee>) query.execute("Smith"); if (results.iterator().hasNext()) { for (Employee e : results) { // ... } } else { // ... no results ... Where lastName=‘Smith’ } Order by hireDate desc } finally { に相当 query.closeAll(); } :
9.
JDO の基本 5
Transaction Transaction tx = pm.currentTransaction(); try { tx.begin(); ClubMembers members = pm.getObjectById(ClubMembers.class, "k12345"); members.incrementCounterBy(1); pm.makePersistent(members); tx.commit(); } finally { if (tx.isActive()) { Tx 間に他所で同じ entity が更新された場 tx.rollback(); 合 } JDOOptimisticVerificationException とな } る :
10.
JDO の基本 6
com.google.appengine.api.datastore.Key import com.google.appengine.api.datastore.Key; // ... @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; public void setKey(Key key) { this.key = key; } : 親のクラスを持つ場合は主キーに Key を使用する Key は親のクラスの Key への参照を持つ 子 Key→ 親 Key Entity の Key は変更できない
11.
JDO の基本 7
関連 Employee.java // ... @Persistent(mappedBy = "employee") private List<ContactInfo> contactInfoSets; ContactInfo.java // ... @Persistent private Employee employee; Employee:Contactinfo = 1:N この場合 Employee が Contactinfo の親になる 共通の親(親の親も含む)を持つ entity の集合を entity group と言う
12.
参考資料
ORM クラス間の一般的な関連の実装方法 RDB の場合:主キー / 外部キーの関連 商品テーブル 外部キ 商品 CD 商品名 単価 商品メーカー CDー 商品メーカーテーブル 商品メーカー CD 商品メーカー名 関連相手の Object 主キー の参照を持つ 関連相手の Object の集合の参照を持つ ORM でのオブジェクト間の関連 Shohin ShohinMaker 1 String shohinCd 0..* String shohinMakerCd String shohinNm String shohinMakerNm Long tanka Set shohins ShohinMaker shohinMaker getShohinMaker() getShohins()
13.
考慮点 (Transaction)
1 Transaction 内では同一の entity group に 属する entity しか扱えない tx.begin(); Query query = pm.newQuery(Employee.class); List<Employee> results = (List<Employee>) query.execute(); Employee e1 = results.get(0); Employee e2 = results.get(1); e1.setFirstName(e1.getFirstName() + "1"); e2.setFirstName(e2.getFirstName() + "2"); tx.commit(); javax.jdo.JDOException つまり、共通の親を持つ entity しか Transaction 化できない
14.
考慮点 (Transaction)
Transaction の制約を受けない方法 単一の entity 「 root 」をすべての親の無い entity の親にする root employee1 employee2 employee3 company1 company2 contactInfo1 contactInfo2 すべては同一の entity group
15.
考慮点 (Transaction)
Root クラス ( 主キーだけあればよい ) @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Root { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; public Key getKey() { return key; } public void setKey(Key key) { this.key = key; } }
16.
考慮点 (Transaction)
親の無い entity の例( Root の Key を持たせる ) @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Employee { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent @Extension(vendorName="datanucleus", key="gae.parent-pk", value="true") private Key rootKey; public void setRootKey(Key rootKey) { this.rootKey = rootKey; } } Root との ManyToOne 関連を持たせる方法でも OK
17.
考慮点 (Transaction)
親が root である Entity の新規作成 root の key をセットする (root のキー値が1の場 合) // ... Employee e = new Employee("Alfred", "Smith", new Date()); Key key = KeyFactory.createKey("Root", 1); e.setRootKey(key); pm.makePersistent(e); :
18.
考慮点 ( 関連
) 関連実装時の問題(関連が Key の構造にな る) 親を一度設定すると変更できない 複数の親を定義できない division1 division2 2009 年春の「コンピュータの基礎」の問題 season1 genre1 x employee1 x Employee1 は一生 division1 question1 Season と Genre 両方親に出来ない
19.
考慮点 7 (
関連 - 解決策 ) 関連は親の Key を保持することで実装する @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Question { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private Key seasonKey; @Persistent 関連先 Object を要求された時 private Key genreKey; に entity を読む public Season getSeason() { if (this.seasonKey == null) { return null; } return getPm().getObjectById(Season.class, this.seasonKey); } public void setSeason(Season season) { this.seasonKey = season.getKey(); } :
20.
考慮点 (PersistenceManager)
PersistenceManager の使いまわし 一連の処理で使用する PersistenceManager は同 一のものを使用する必要がある。 // ... Season s = question.getSeason(); s.setCnt(s.getCnt()+1); pm.makePersistent(s); public Season getSeason() { if (this.seasonKey == null) { return null; } return pm.getObjectById(Season.class, this.seasonKey); }
21.
考慮点 (PersistenceManager)
PersistenceManager を request に保持する public class PMManager { public static final String pmName = " PMManager _PM"; public static PersistenceManager getPm() { HttpServletRequest request = null; PersistenceManager pm = null; try { request = (HttpServletRequest) SingletonS2ContainerFactory .getContainer().getComponent(HttpServletRequest.class); pm = (PersistenceManager) request.getAttribute(pmName); } catch (Exception e) { } if (pm == null) { pm = PMF.get().getPersistenceManager(); if (request != null) { request.setAttribute(pmName, pm); この場合 Seasar2 のコンテナ } から request を得ている } return pm; } }
22.
考慮点 (PersistenceManager)
PMManager から入手する例 // ... Season s = question.getSeason(); s.setCnt(s.getCnt()+1); PMManager.getPm().makePersistent(s); public Season getSeason() { if (this.seasonKey == null) { return null; } return PMManager.getPm() . getObjectById(Season.class, this.seasonKey); }
23.
考慮点 (Index)
検索条件によっては明示的に Index を定義す る必要がある。 Google の資料で Index 定義が必要な検索とは 複数のソートが指定された場合 Key の逆順ソートの場合 == でない条件と == の条件がある場合 == の条件と ancestor フィルターがある場合 Local 環境で OK でも Deploy した環境で NG の場 合がある
24.
考慮点 (Index)
Index の設定例 war/WEB-INF/datastore-indexes.xml に指定 <?xml version="1.0" encoding="utf-8"?> <datastore-indexes autoGenerate="false"> <datastore-index kind="Question" ancestor="false" source="auto"> <property name="seasonKey" direction="asc"/> <property name="genreKey" direction="asc"/> </datastore-index> </datastore-indexes>
25.
その他の考慮点
kind 間の Join による読み込みはできない group by を使用した集約関数は使用できない count(*) / sum(xxx) 等 検索条件に != 、 IN は使用できない Python ではクライアント側の実装として実現し ている 検索条件の組み合わせで or 、 not は使用で きない
26.
おわり
ありがとうございました
Descargar ahora