TierDeveloper is licensed on a per node basis. This means that one license permits you to install TierDeveloper on one machine to be used only on that machine.
Previously, TierDeveloper only permitted you to generate code against a sample database but that is not true anymore. Now, there are no features turned off in the evaluation edition. You can generate code against ANY database, build and deploy it. However, TierDeveloper and the generated code expires after the 30-day trial period. Then, if you purchase TierDeveloper, everything starts working again.
TierDeveloper application runs on Microsoft Windows NT, 2000, XP and 2003. However, the output of TierDeveloper (meaning the generated code) can run on all .NET supported platforms. TierDeveloper 5.5 works fine on Windows Vista if the user is administrator or open TierDeveloper by right clicking on TierDeveloper Icon and select “Run as Administrator”.
Currently, TierDeveloper supports Oracle 8.x/8i/9i/10g, IBM DB2 7.1 and 4.1, Microsoft SQL Server 7.0, 2000 and 2005 Microsoft Access 2000 and above. We are going to provide support for other database servers as well in our future releases.
The only pre-requisites for installing and running TierDeveloper are Windows NT 4.0, Windows 2000, or Windows XP. However, if you want to generate compiled code then you must have the build environment for the target platform available on this machine. This environment is explained in more details elsewhere in FAQ.
Yes, whenever you define data objects, relationships, and queries in TierDeveloper, you are defining them for all platforms that TierDeveloper support. This means that you won't have to spend time defining these objects again if you decided to change your underlying target platform (e.g. from C#.NET to VB.NET and vice versa.).
If you want to generate compiled code from TierDeveloper, then you must ensure that your computer has adequate compilation environment already setup for it. This environment is different for different platforms and is explained in more detail in platform-specific questions.
Yes, a data object can be defined against one or more tables. If there are multiple tables involved in a data object, then all participating tables must have a relationship with at least one other table in the list. This allows correct joins to be formed among all the different tables.
Yes, you can define custom SQL queries as part of data objects. Each query becomes a method in the object that may take run-time parameters and return zero or more rows. You can type any valid SQL query as part of this query including doing joins, nested queries, UNION, and various other aspects of SQL.
TierDeveloper uses Oracle OLE DB Provider to connect with Oracle (8i/9i/10g) database server. Make sure the following is installed and configured on your system (that’s running TierDeveloper).
1. Download Oracle Provider for OLE DB (184.108.40.206.0 or a later version) from Oracle web site http://otn.oracle.com/software/tech/windows/ole_db/htdocs/utilsoft.htm and install it on your system.
2. Use “Net Configuration Assistance” tool to configure a local Net Service (if one is not already configured on your system) e.g. "testdb" against Oracle Database Server.
3. Launch TierDeveloper and select "Data Object Wizard" to create new project against Oracle database e.g. to connect with Demo (scott/tiger) schema, specify the following values on Connection Attributes page.
User Name = scott
Password = tiger
Service Name = testdb
Schema Name = scott
4. Click “Next” button to proceed so that TierDeveloper reads database schema information.
When you connect with Oracle Database using TierDeveloper, the Schema Retrieval process may take longer time due to the following reasons.
- The specific user (schema) is assigned extra privileges to access external schemas in the Oracle Server. e.g. if the user "scott" is assigned additional privileges so as to access the tables in other schemas. In this case, TierDeveloper reads schema information both for user's owned and non-owned schemas.
- The number of tables (entities) in the specific schema is comparatively large and thus it takes bit longer than usual to fetch the schema.
- TierDeveloper uses OLEDB provider for Oracle to read the schema information and it is comparatively slower (as TierDeveloper reads the schema information from SQL Server and DB2 in less time normally within a minute where as for Oracle it may sometimes take 10-15 minutes based on the schema complexity).
So if it appears like TierDeveloper is hanged up, then you should rather wait before it's done with the schema retrieval process.
Question 12: I have made certain changes in the underlying database schema. However TierDeveloper doesn’t reflect all the changes when I proceed to “Synchronize” the “.tier” project against the specific database. What to do in this case?
The basic synchronization rules are given below. However there are certain constraints that are applied during "Synchronization" process for all mapped tables (and for unmapped tables that have relationships defined with a mapped table) in which case synchronization will not take place.
1. Any new table additions in the underlying database are reflected in the .tier project. Similarly if the existing table is renamed or removed, it'll be synchronized unless there're any constraints.
2. If there's a column change i.e. new column addition, column modification or removal of column for an unmapped table, it's synchronized. e.g. If the target database contains 2 tables named 1. Customer 2. Order, and only customer table is mapped against the data object (leaving the order table unmapped) then any column modifications in order table are synchronized.
3. If there's a change (either modification or removal of column) in the PK column of a table and its child table is already mapped against a Data Object, it's not synchronized unless the (Data Object) mapping for child table is removed first.
4. Similarly a change in a foreign column attribute in an unmapped table will not be reflected, if its parent table is already mapped against a data object.
So if any of the condition is not fulfilled, make sure to first remove the specific constraints and then proceed with the "Synchronization" process.
Also if you want to be notified about any possible changes in the database before performing the synchronization, then use "Validate" (Database->Validate...) option that'll inform you about any possible changes.
Each project requires a different approach and therefore an absolute answer cannot be given. However, if you are starting out on a new web application development project then, we recommend that you do things in the following sequence.
After finishing software requirements capture, you should design the database and create it in your desired database server. You should also design the GUI layout in parallel. Once these two things are done then you should analyze how different parts of the GUI would access different tables in the database. Based on this analysis, you should define all the data objects, relationships, and queries. You can then quickly generate all the data objects and its associated test application in ASP/JSP.
Once you are done with this, you have covered majority of your web application's behavior. You'll also identify some areas that need "business logic". Some of the business logic can easily be handled via stored procedures while in other cases, you need to write this business logic in your ASP/JSP code or in special business logic objects. This topic is quite broad and therefore cannot be fully covered here. This answer only gives you a peek into how to approach this.
Instead of allowing you to hand-enter all the database schema information, TierDeveloper strongly recommends that you first create a physical database and then do the mapping against it. This way, you will iron out any database bugs before you map objects to it. This approach would result in a bug-free data objects because you'll be able to test a lot of their behavior from TierDeveloper at the definition time.
Typically, it is not a good idea to directly create database schema from an object model since a database has to address its own unique issues. Doing this directly and without database specific design analysis is likely to create an inefficient, not easily extendible database, and maybe even a wrong data model.
We would recommend that you first create a data model from this object model by following various object-to-relational mapping rules but at the same time keeping your database usage and transactions in mind. Once you have done this, then you should create the physical database and then use TierDeveloper to map data objects against the schema.
Before you do anything else, you would want to first ensure that there is design consistency and compatibility between your object model and the data model. Your object model is likely to contain objects that do not need persistence. Once you have done this, then you can define mapping in TierDeveloper and create/generate data objects that provide access to this database. Once this is done, then you can simply call these data objects from the methods of your objects that need persistence. This way, you can keep your database related code separate from your non-database related code.
You should contact us and let us know about your interest in a particular database server. The chances are very high that in a short period of time, we'll come out with a support of that database server. TierDeveloper code uses OLE DB to access a database server which means that we can easily port it to another database server. And, the code that is generated by TierDeveloper uses standard ADO or JDBC calls and therefore is also easily portable.
One can override the hard-coded "connection string" through COM+ Explorer. The TierDeveloper generated code overrides "Construct" method so as to allow the user to change the connection value for a registered component/assembly. TierDeveloper generated code first looks there for a connection string and if it doesn't find it there only then does it use the default "hard-coded" connection string. Launch "Components Services" and then select “Properties” dialog for one or more MTS objects and specify a different connection string (use “Activation” tab to specify “Constructor string” value under “Object construction” section).
TierDeveloper no longer imposes any restriction to use sample databases during evaluation period. TierDeveloper 4.0 provides you the flexibility to use your own database even during the evaluation period, so that you can analyze all of TierDeveloper code generation features against your database before purchasing it.