Showing 1 changed files with 37 additions and 44 deletions
+37 -44
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -1000,7 +1000,8 @@ L<DBIx::Custom>のC<not_exists>でDBIx::Custom::NotExistsオブジェクトを
1000 1000
 
1001 1001
 =head3 C<select()>との連携
1002 1002
 
1003
-C<select()>との連携です。C<select()>のC<where>に直接渡すことが
1003
+L<DBIx::Custom::Where>オブジェクトは
1004
+C<select()>のC<where>に直接渡すことが
1004 1005
 できます。
1005 1006
     
1006 1007
     my $where = $dbi->where;
... ...
@@ -1008,7 +1009,7 @@ C<select()>との連携です。C<select()>のC<where>に直接渡すことが
1008 1009
     $where->param($param);
1009 1010
     my $result = $dbi->select(table => 'book', where => $where);
1010 1011
 
1011
-あるいはC<update>、C<delete>と連携することが可能です。
1012
+あるいはC<update()>、C<delete()>のwhereに指定することも可能です。
1012 1013
 
1013 1014
 =head3 C<execute()>との連携
1014 1015
 
... ...
@@ -1028,18 +1029,23 @@ C<execute()>との連携です。SQLを作成するときに埋め込むこと
1028 1029
 
1029 1030
 =head2 7. パフォーマンスの改善
1030 1031
 
1031
-=head3 シュガーメソッドを使わない
1032
+=head3 クエリの作成
1032 1033
 
1033 1034
 もしC<insert()>メソッドを使用してインサートを実行した場合、
1034 1035
 必要なパフォーマンスを得られない場合があるかもしれません。
1035 1036
 C<insert()>メソッドは、SQL文とステートメントハンドルを
1036
-毎回作成するためすこし遅いです。
1037
+毎回作成するためです。
1038
+
1039
+そのような場合は、C<query>オプションを指定することで、
1040
+クエリを取得することができます。
1041
+
1042
+    my $query = $dbi->insert(table => 'book', param => $param, query => 1);
1043
+
1044
+またC<create_query()>メソッドを使って任意のSQLのクエリを作成
1045
+することもできます。
1037 1046
 
1038
-そのような場合は、C<create_query()>メソッドによって
1039
-クエリを用意しておくことができます。
1040
-    
1041 1047
     my $query = $dbi->create_query(
1042
-        "insert into book {insert_param title author};"
1048
+        "insert into book {insert_param title author};";
1043 1049
     );
1044 1050
 
1045 1051
 戻り値はL<DBIx::Custom::Query>オブジェクトです。
... ...
@@ -1052,48 +1058,35 @@ C<insert()>メソッドは、SQL文とステートメントハンドルを
1052 1058
         sth     => $sth
1053 1059
     }
1054 1060
 
1055
-クエリオブジェクトを使って繰り返し実行するには次のようにします。
1061
+クエリオブジェクトを使って繰り返し実行するにはC<execute()>を使用します。
1056 1062
     
1057
-    my $inputs = [
1063
+    my $params = [
1058 1064
         {title => 'Perl',      author => 'Ken'},
1059 1065
         {title => 'Good days', author => 'Mike'}
1060 1066
     ];
1061 1067
     
1062
-    foreach my $input (@$inputs) {
1063
-        $dbi->execute($query, $input);
1068
+    foreach my $param (@$paramss) {
1069
+        $dbi->execute($query, table => 'book', param => $input);
1064 1070
     }
1065 1071
 
1066 1072
 C<execute>メソッドの第一引数にクエリオブジェトを渡すことができます。
1067
-これはC<insert()>メソッドよりも高速です。
1068
-
1069
-=head2 8. その他の機能
1073
+C<insert()>メソッドよりも高速です。
1070 1074
 
1071
-=head3 トランザクション
1075
+注意点がいくつかあります。それはパラメータの数は必ず同じでなくてはならない
1076
+ということです。最初に3つのパラメータだけを渡したのに、次の実行では
1077
+二つのパラメータを渡すと予期しない結果になります。それは
1078
+動的に生成されたSQLに含まれるプレースホルダの数が異なるからです。
1079
+またC<execute()>によっては自動的にはフィルタが有効にならないので、
1080
+C<table>を指定する必要のあることに注意してください。
1081
+本当に必要な場合だけ利用してください。
1072 1082
 
1073
-トランザクションを便利に利用するために、
1074
-C<begin_work()>、C<commit()>、C<rollback()>
1075
-という三つのメソッドが容易されています。
1076
-これはL<DBI>の同名のメソッドと同じ機能を持ちます。
1077
-fc
1078
-    $dbi->begin_work;
1079
-    
1080
-    eval {
1081
-        $dbi->update(...);
1082
-        $dbi->update(...);
1083
-    };
1084
-    
1085
-    if ($@) {
1086
-        $dbi->rollback;
1087
-    }
1088
-    else {
1089
-        $dbi->commit;
1090
-    }
1083
+=head2 8. その他の機能
1091 1084
 
1092 1085
 =head3 結果クラスの変更
1093 1086
 
1094
-必要ならばC<select()>メソッドの結果クラスを変更することができます。
1087
+必要ならば結果クラスを変更することができます。
1095 1088
 
1096
-    package Your::Result;
1089
+    package MyResult;
1097 1090
     use base 'DBIx::Custom::Result';
1098 1091
     
1099 1092
     sub some_method { ... }
... ...
@@ -1102,27 +1095,27 @@ fc
1102 1095
     
1103 1096
     package main;
1104 1097
     
1105
-    use Your::Result;
1098
+    use MyResult;
1106 1099
     
1107 1100
     my $dbi = DBIx::Custom->connect(...);
1108
-    $dbi->result_class('Your::Result');
1101
+    $dbi->result_class('MyResult');
1109 1102
 
1110
-=head3 ヘルパーメソッドの登録
1103
+=head3 メソッドの登録
1111 1104
 
1112
-ヘルパーメソッドを登録することができます。
1105
+メソッドを登録するにはC<method()>を使用します。
1113 1106
 
1114
-    $dbi->helper(
1107
+    $dbi->method(
1115 1108
         update_or_insert => sub {
1116 1109
             my $self = shift;
1117
-            # do something
1110
+            # something
1118 1111
         },
1119 1112
         find_or_create   => sub {
1120 1113
             my $self = shift;
1121
-            # do something
1114
+            # something
1122 1115
         }
1123 1116
     );
1124 1117
 
1125
-<helper()>メソッドで登録したメソッドは
1118
+<method()>で登録したメソッドは
1126 1119
 L<DBIx::Custom>オブジェクトから直接呼び出すことができます。
1127 1120
 
1128 1121
     $dbi->update_or_insert;