1- ==================
2- Lombok サポート
3- ==================
1+ ==============
2+ Lombok support
3+ ==============
44
5- .. contents :: 目次
5+ .. contents ::
66 :depth: 3
77
8- Doma は `Lombok <https://projectlombok.org/ >`_ のバージョン 1.16.12 以上をサポートしています。
8+ Doma supports `Lombok <https://projectlombok.org/ >`_ 1.16.12 or above.
99
1010.. note ::
1111
12- IDE として Eclipse を利用する場合はバージョン 4.5 以上を使ってください。
13- 4.5 未満ではアノテーションプロッサで取得されるクラスに定義されたフィールドなどの並びがソースコードに記載されている順序と異なり、
14- 正しく動作しないためです。
12+ If you intend to use Eclipse, use version 4.5 or above.
1513
16- Lombok サポートの概要
17- ================================
14+ Overview
15+ ========
1816
19- Lombok と Doma は共に JSR 269 で規定されたアノテーションプロセッサを提供していますが、
20- Lombok と Doma を同時に利用する場合はアノテーションプロセッサの処理順序が問題になることがあります。
21- 例えば、 Lombok のアノテーションプロセッサがコンストラクタを生成し、
22- Doma のアノテーションプロセッサがそのコンストラクタを読み取る場合などです。
23- 仮に、Doma のアノテーションプロセッサが先に実行されると単にコンストラクタが定義されていないものとして動作し、
24- コンパイルに失敗します。
17+ Both Lombok and Doma provide their own annotation processors.
18+ Because the execution order of annotation processors is not determined in Java,
19+ the Doma's annotation processors are not always aware of the class modifications made by
20+ the Lombok annotation processors.
2521
26- アノテーションプロセッサの処理順序を指定できればこの問題は解決するのですが、
27- 残念ながら処理順序が保証されないことが仕様に記載されており、実際に問題解決の仕組みは提供されていません。
22+ To resolve the issue, the Doma's annotation processors recognise several Lombok's annotations
23+ and change their own behavior.
24+ For example, if the Doma's annotation processors find a class annotated with ``@lombok.Value ``,
25+ they supposes that the class has a constructor whose arguments covers all instance fields.
2826
29- Doma では、この問題に対応するために、Lombok のアノテーションの有無を認識して処理順序に依存にしない振る舞いをするようにしています。
30- 先ほどの例で言えば、 ``@lombok.Value `` などコンストラクタを生成するLombokのアノテーションが存在する場合は
31- 実際にはコンストラクタを読み取らなくてもコンストラクタが存在するものとして動作するということです。
27+ Best practices
28+ ==============
3229
33- Lombok 利用のベストプラクティス
34- ================================
30+ We show you recommended ways to define classes with Lombok annotations.
3531
36- Lombok のアノテーションを用いたクラスの定義について推奨する方法を記載します。
32+ Entity class definition
33+ -----------------------
3734
38- エンティティクラス
39- -------------------
35+ immutable entity classes
36+ ~~~~~~~~~~~~~~~~~~~~~~~~
4037
41- immutable(イミュータブル)
42- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43-
44- イミュータブルなエンティティクラスを定義する場合は下記の点に注意します。
45-
46- * ``@Entity `` の ``immutable `` 要素に ``true `` を設定する
47- * ``@lombok.Value `` もしくは ``@lombok.AllArgsConstructor `` を注釈する
48- * ``@lombok.AllArgsConstructor `` を選んだ場合、getterを生成するためには ``@lombok.Getter `` を注釈する
38+ * Specify ``true `` to the ``immutable `` element of ``@Entity ``
39+ * Specify either ``@lombok.Value `` or ``@lombok.AllArgsConstructor ``
40+ * Specify ``@lombok.Getter `` to generate getters, in case of ``@lombok.AllArgsConstructor ``
4941
5042.. code-block :: java
5143
@@ -70,13 +62,11 @@ immutable(イミュータブル)
7062 private final Age age;
7163 }
7264
73- mutable(ミュータブル)
74- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75-
76- ミュータブルなエンティティクラスを定義する場合は下記の点に注意します。
65+ mutable entity classes
66+ ~~~~~~~~~~~~~~~~~~~~~~
7767
78- * デフォルトコンストラクタを定義する(デフォルトコンストラクタの生成を抑制しない)
79- * getter/setterを生成する場合は ``@lombok.Data `` もしくは ``@lombok.Getter `` / ``@lombok.Setter `` を注釈する
68+ * Define a default constructor
69+ * Specify ``@lombok.Data `` or ``@lombok.Getter ``/ ``@lombok.Setter `` to generate getters/setters
8070
8171.. code-block :: java
8272
@@ -101,13 +91,11 @@ mutable(ミュータブル)
10191 private Age age;
10292 }
10393
104- ドメインクラス
105- -------------------
94+ Domain class definition
95+ -----------------------
10696
107- ドメインクラスを定義する場合は下記の点に注意します。
108-
109- * ``@lombok.Value `` を注釈する
110- * インスタンスフィールドは1つだけ定義し名前は ``value `` にする
97+ * Specify ``@lombok.Value ``
98+ * Define only one instance field whose name is ``value ``
11199
112100.. code-block :: java
113101
@@ -117,13 +105,11 @@ mutable(ミュータブル)
117105 Integer value;
118106 }
119107
120- エンベッダブルクラス
121- ----------------------
122-
123- エンベッダブルクラスを定義する場合は下記の点に注意します。
108+ Embeddable class definition
109+ ---------------------------
124110
125- * ``@lombok.Value `` もしくは ``@lombok.AllArgsConstructor `` を注釈する
126- * ``@lombok.AllArgsConstructor `` を選んだ場合、getterを生成するためには ``@lombok.Getter `` を注釈する
111+ * Specify either ``@lombok.Value `` or ``@lombok.AllArgsConstructor ``
112+ * Specify ``@lombok.Getter `` to generate getters, in case of ``@lombok.AllArgsConstructor ``
127113
128114.. code-block :: java
129115
0 commit comments