通过四个步骤将ORM添加到您的项目中

假设您的项目迫切需要一个ORM,而您想尽快实施它。在本文中,我想通过一个使用开源Apache Cayenne项目的示例向您展示如何仅用四个步骤就可以做到这一点





首先,我将简要描述使用此库的机制。数据库和模型模式在xml文件中描述,该文件可以通过GUI应用程序或控制台生成。然后,基于xml文件,生成java对象,它们是数据库中表的对应映射。最后一步是创建ServerRuntime一个封装整个Apache Cayenne堆栈的对象。



因此,让我们继续一个例子。需要做什么:



  • 创建数据库架构
  • 将模式导入项目,即获取具有模式描述的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 — , .



cdbimport: , . . , , , . .





, 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().



API sql ejbql API. .



Apache Cayenne:



List<CarBrand> carBrans = ObjectSelect.query(CarBrand.class).select(context);


这就是我的全部。从该示例可以看到,只需几个步骤,您就可以得到完全可操作的生产ORM。我希望这篇文章对您有所帮助。一个完整的例子可以在这里找到




All Articles