Ajoutez ORM à votre projet en quatre étapes

Supposons que votre projet ait un besoin urgent d'un ORM et que vous souhaitiez le mettre en œuvre le plus rapidement possible. Dans cet article, je veux vous montrer comment vous pouvez le faire en seulement quatre étapes en utilisant l'exemple d'utilisation du projet open source Apache Cayenne .





Pour commencer, je décrirai brièvement le mécanisme de travail avec cette bibliothèque. La base de données et le schéma du modèle sont décrits dans un fichier xml qui peut être généré via une application GUI ou via la console. Ensuite, sur la base du fichier xml, des objets java sont générés, qui correspondent au mappage correspondant des tables de la base de données. La dernière étape consiste à créer ServerRuntimeun objet qui encapsule la totalité de la pile Apache Cayenne.



Alors passons à un exemple. Ce qui doit être fait:



  • Créer un schéma de base de données
  • Importez le schéma dans le projet, c'est-à-dire récupérez les fichiers xml avec la description du schéma
  • Créer un modèle objet, c'est-à-dire générer des classes Java
  • Initialiser ServerRuntimepour accéder à la base de données depuis l'application


? 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);


C'est tout pour moi. Comme vous pouvez le voir dans cet exemple, en quelques étapes, vous pouvez obtenir un ORM de production pleinement opérationnel. J'espère que l'article a été utile. Un exemple complet peut être trouvé ici .




All Articles