Message:

Subscribe rss
Blog categories
All | Backendless features
Feature 15: client code generation based on defined tables
January 21, 2015 by markpiller
Spread the love

In this post we continue our mission to build a restaurant to-go order app. So far we have put together UI mockups for the future Backendless application, and designed data schema for all application’s data entities. At this point we got very close to the coding part. As the title of this article suggests, we will be generating some code, but before we do it, let me describe a core principle of the client-server integration with Backendless.

Every table in your Backendless backend represents an entity. For instance, if it is a Restaurant table, it represents and contains Restaurant objects. The same is true for relations. For example, there is a one-to-many relation between the Menu and MenuItem tables. That relation represents the composition pattern in the object-oriented view of the world. Indeed a Menu object may contain one or more MenuItem objects. The Backendless API uses that concept to the fullest – any time you need to save an object in a table – you create a class instance which corresponds to the table and save it using the API. You can see an example in a post which describes how to save objects in Backendless. What this means is the starting point for the coding task is creating the code for the core entities in the application. Some client-side environments call them DTOs (data transfer objects) or VOs (Value Objects). Whatever the term you would like to use, these are objects which will travel back and forth between the client application and the Backendless servers. These objects will be stored in the Backendless data tables. A property in such an object correlates to a column in a table. This is very important to understand and I hope my explanation makes it clear.

Let’s move on to the fun part.. The classes for application entities described above can obviously be written by hand. In fact, if you follow the “code first” approach and write the code before any tables are created, Backendless will create all the tables for you when objects are saved with the API. The other school of thought is to create the data tables first and then write the code that follows the structure of the tables. We call that approach “schema first”. In that case Backendless significantly simplifies the process of developing code. It does so by providing the code generation feature, which introspects the structure of the tables you created and generates Java, Objective-C, JavaScript or ActionScript classes for these tables.

To see the Backendless code generation in action, make sure to import the table schema so your app has all the tables for the Restaurant to-go app. Once it is done, follow the instructions below:

  1. Login to Backendless console, select your app and click the Code Generation icon.
  2. Select the client-side environment you will be working with (Android, iOS, JavaScript or Flex/AIR).
  3. In the menu of code generation options select the __XXX___ classes for defined data tables checkbox, where __XXX__ references the language of your choice, for example “Java classes for defined tables”.
  4. Click the Download Project button.
    backendless codegen - Feature 15: client code generation based on defined tables

Backendless will generate the project files and the source code and package it in a ZIP file. Expand the zip file and open the generated project an IDE of your choice (Eclipse, IDEA, XCode). Make sure to inspect the contents of the project, you will see the classes for all the tables from your backend. The generated code contains 100% of the functionality to perform all the major data-related operations (full CRUD – Create, Retrieve, Update and Delete).

In the future posts I will be describing how to use the generated code in the Restaurant app we’re working on.

Enjoy!

Share this post
Tweet about this on TwitterShare on FacebookGoogle+