プロジェクトでORMが緊急に必要であり、できるだけ早く実装したいとします。この記事では、オープンソースのApache Cayenneプロジェクトの使用例を使用して、これを4つのステップで実行する方法を紹介します。
まず、このライブラリを操作するメカニズムについて簡単に説明します。データベースとモデルのスキーマは、GUIアプリケーションまたはコンソールから生成できるxmlファイルで記述されています。次に、xmlファイルに基づいて、データベース内のテーブルの対応するマッピングであるjavaオブジェクトが生成されます。最後のステップは、ServerRuntime
ApacheCayenneスタック全体をカプセル化するオブジェクトを作成することです。
それでは、例に移りましょう。何をする必要がありますか:
- データベーススキーマを作成する
- スキーマをプロジェクトにインポートします。つまり、スキーマの説明を含むxmlファイルを取得します。
- オブジェクトモデルを作成します。つまり、Javaクラスを生成します。
ServerRuntime
アプリケーションからデータベースにアクセスするために初期化します
? maven gradle , Java 1.8+ . maven, java 14 Apache Cayenne 4.2.M1. mysql. 4.1 .
.
, : , , .
CREATE SCHEMA IF NOT EXISTS cars_demo; USE cars_demo;
CREATE TABLE car_brand (ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(200) NULL, COUNTRY VARCHAR(200) NULL, PRIMARY KEY (ID)) ENGINE=InnoDB;
CREATE TABLE car_model (ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(200) NULL, CAR_BRAND_ID INT NULL, PRIMARY KEY (ID)) ENGINE=InnoDB;
CREATE TABLE feedback (CAR_MODEL_ID INT NULL, ID INT NOT NULL AUTO_INCREMENT, FEEDBACK VARCHAR(200) NULL, PRIMARY KEY (ID)) ENGINE=InnoDB;
ALTER TABLE car_model ADD FOREIGN KEY (CAR_BRAND_ID) REFERENCES car_brand (ID) ON DELETE CASCADE;
ALTER TABLE feedback ADD FOREIGN KEY (CAR_MODEL_ID) REFERENCES car_model (ID) ON DELETE CASCADE;
, .
. :
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>cayenne-maven-plugin</artifactId>
<version>${cayenne.version}</version>
<configuration>
<dataSource> <!--1-->
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/cars_demo</url>
<username>root</username>
<password>root</password>
</dataSource>
<cayenneProject>${project.basedir}/src/main/resources/cayenne/cayenne-project.xml</cayenneProject> <!--2-->
<map>${project.basedir}/src/main/resources/cayenne/datamap.map.xml</map> <!--3-->
<dbImport> <!--4-->
<defaultPackage>cayenne.note.project.model</defaultPackage>
<catalog>cars_demo</catalog>
</dbImport>
</configuration>
<dependencies>
<dependency> <!--5-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</plugin>
- (1) DataSource,
- (2) , xml, Cayenne
- (3) , xml
- (4) ,
- (5) mysql-connector mysql
:
mvn cayenne:cdbimport
, (2) (3). , cayenne-project.xml , . datamap.map.xml — , .
, java , . , :
mvn cayenne:cgen
, , . , . auto
. , . , auto
. .
, Apache Cayenne.
ServerRuntime
— Cayenne, .
ObjectContext
— , .
ServerRuntime cayenneRuntime = ServerRuntime.builder()
.dataSource(DataSourceBuilder
.url("jdbc:mysql://127.0.0.1:3306/cars_demo")
.driver("com.mysql.cj.jdbc.Driver")
.userName("root") // Need to change to your username
.password("root") // Need to change to your password
.build())
.addConfig("cayenne/cayenne-project.xml")
.build();
ObjectContext context = cayenneRuntime.newContext();
:
CarBrand carBrand = context.newObject(CarBrand.class);
carBrand.setName("BMW");
carBrand.setCountry("Germany");
CarModel carModel = context.newObject(CarModel.class);
carModel.setName("i3");
carModel.setCarBrand(carBrand);
Feedback feedback = context.newObject(Feedback.class);
feedback.setFeedback("Like");
feedback.setCarModel(carModel);
context.commitChanges();
, ObjectContext
, context.commitChanges()
.
Apache Cayenne:
List<CarBrand> carBrans = ObjectSelect.query(CarBrand.class).select(context);
これですべてです。この例からわかるように、いくつかの手順で、完全に機能する本番ORMを取得できます。この記事がお役に立てば幸いです。完全な例はここにあります。