I am using JAVA DB (Part of JDK1.7) for my development environment. We have Oracle 11g on our SIT environment. I was researching whether JAVA DB (Which is based upon Apache Derby) is compliant with Oracle 11g i.e. Will I need some changes in my query structure or code if I try to migrate my code from JAVA DB to Oracle 11g?
Java DB and Oracle 11g are not entirely compatible with each other. Depending on your query's complexity, you may or may not need to port your code.
it just require the connection to particular db which are using do need any extra code for db it is same for any database
SQL Compatibility is a big topic. You might want to start here: http://wiki.apache.org/db-derby/SQLvsDerbyFeatures
Related
Hello I am quite new to oracle and databases in general.
I have been creating database using Oracle 11g Express for some time, I used only Pl/SQL so far, but now I need to work with Java classes and I just found out Express version do not support java, (when using loadjava, I get error ORA-29538: Java not installed )
So is there way to install java to database or is there simple way to export database (tables, relations, types, data, etc) to some other version what does support java ?
p.s I know that some/most of functions can be done with pl/sql, but I need to use Java.
The Oracle XE doesn't support Java in database (and it can't be additionally installed. For java support you need the full version - at least Standard Edition. Note that contrary to XE you will need license to use this version productive.
You may export / import using data pump
i am not clear about steps/configuration details about how i can embed mysql in a Java desktop application so that it(application) can be installed on any machine through a single executable file and doing so sets up database and also provides an exe to run the app.Till now i have built my app using netbeans and i have used mysql to set up database.plz guide me further.
MySQL isn't an embedded database - the only JAR related to it is the JDBC driver. It requires a installation process, which might be able to be scripted via Java, but the process will definitely function outside of the Java application you intend it to support. Meaning, you can turn off your Java application but the MySQL service/daemon will still be running.
Only the libmysqld is embeddable.
There are embedded databases - SQLite, Firebird - and embedded databases made in Java - HSQL, Derby/(can't remember what it was called before). I believe SQL Server Compact Edition is embeddable, while SQL Server Express/MSDE is not. I don't know if Oracle has an embeddable version....
I would strongly recommend H2. It is a very fast embedded database written in Java and I've found it easier to use than some of the others mentioned such as HSQL.
Edit:
On the H2 website, you can see a speed comparison of H2 vs Derby, HSQL, MySql, etc...
Here's information on how to backup the database.
While theoritcaly possable it would not be easy. The standard MySql distributions assume you want to set up a general purpose database server with separate from the client applications cominicating via odbc etc.
You may be better looking at the "pure java" options like HSQL or JavaDB which are designed to be embedded in a java application, and need little or no "setup".
Another possibility is Sqlite which only needs a single binary plus the sqljbbc jar file. This is again designed from scratch to be embedded inside an application and requires zero admin apart from allocating a file for the database.
Take a look at http://dev.mysql.com/doc/refman/5.0/en/connector-mxj.html. I do not remember the exact details but I was able to embed MySQL db in desktop application without user needing to install it separately.
The key class is com.mysql.management.MysqldResource.
Here is the example, http://dev.mysql.com/doc/refman/5.0/en/connector-mxj-configuration-java-object.html
The mysql-connector-mxj-gpl-db-files.jar file contains MySQL installation files for all the platforms. If you know which is your target platform, you can strip other platform versions from jar, to reduce download size for end user.
If you want an embedded database with java, then use one written in Java designed to be embedded. I know Apache Derby Can be embedded and apparently H2 too.
How big amount of data dó you need the database to handle?
I have thought of creating my first database application for one of my projects using Oracle and Java. I have chosen Netbeans as my development environment. I have a few questions to getting started.
This will be a data intensive (yet still for a college project) database application. I do not need 1000 user concurrency or any other very advanced features but basic stuff such as triggers, stored procedures etc. Will the 11g "Express" (XE) suffice for my requirements?
Do i need any Java to Oracle bridge (database connectivity driver eg. ODBC etc) for Netbeans to connect to the oracle database? If yes, what are they? Does Netbeans support Oracle databases natively?
Any easy to follow guide on how do I connect to the database and insert/retrieve/display data on a J2SE application? (I know that i should Google this but if there's any guide previously followed by anyone and is considered easy, it would be greatly appreciated.)
There are several different ways to access databases using Java. I'm assuming you are wanting to use JDBC, which is included in all recent JDK's. There are other layers on top of JDBC like Hibernate that may make things cleaner for larger applications, but may also be too steep a learning curve if you have a project to complete and submit.
To answer your questions in order:
I think it's highly likely that Oracle 10g Express Edition will do what you need for a college project. It's pretty much the 10g Standard Edition with a 4GB limit on data size.
You will need a JDBC driver to access the database from Java. It comes with XE, and is installed in <XE client install dir>/jdbc/lib/ojdbc14.jar
Sun have an introduction to JDBC here.
Is there a "best" or more popular database for standalone Java app?
I'm currently writing by hand, but I would like to know what is commonly done, if there is something that is commonly done.
update: talking about small app (may grow, but its small for now)
I would suggest using something like SQLite with SQLiteJDBC.
It also sounds like HyperSQL and Derby (which ships with certain Java versions) are popular choices.
Java 6 ships with Derby (renamed JavaDB). It can be used in memory or server mode.
HyperSQL (HSQLDB) is also popular.
For development purposes, I often use the Hypersonic SQL Database (HSQLDB). It's fast and lightweight, and good enough to get started.
For a bigger application, I'd go for Derby, which supports more options.
The main competitors - HyperSQL (HSQLDB), JavaDB (Derby) and SQLite (not java-based) were mentioned.
There are a few other options:
db4o - object database
FirebirdSQL - not java-based.
Jackrabit - a content repository (not RDBMS) supporting embedded mode.
HSQLDB is a well-established option.
JavaDB comes with the development kit
apart all those mentioned here, one can also go for H2 database which is light and can be used in-memory or in server mode.
For a SQL option, you could try MySQL, SQL Server, PostgreSQL, or Oracle. Those seem to be the most popular among Java developers.
If you want something NoSQL, MongoDB is the most popular choice with Java developers based on StackOverflow data from 2022.
You can find more information on the metrics used to make that determination in this article.
I want to write a small (5-6 table) desktop app in Java. I want to use Firebird 2.1. database. But I googled and see HSQLDB. I want to make a decision between Firebird and hsqldb.
So which database I have to use?
Firebird runs in a process of its own and your java app needs to communicate with it. The advantage HSQLDB has that it is written in java, and can run in the same process, which simplifies your installation and runtime check ups (Is the db running, connection errors, etc.). It can persist the data to the disk as well. AN additional option is the H2 database db, which also can run in process.
I'd go with the HSQLDB or H2.
For a desktop application an embedded database should be enough. hsqldb or h2 are very well suited for this. You just have to add the JAR file to you applications classpath. Firebird looks more complex.
Actually, H2 is more advanced than hsqldb.
Firebird is very good embedded database and just win an award at SouceForge this year
SQLite have good press for embedded Database too.
I recomend HSQLDB because it's implemented in Java (so you have the same platform as the application) and I guess that you don't need any of the feature for the project of that size that could FireBird provide.
Don't forget that Java 6 comes with JavaDB, and that may be a useful implementation for a first solution. It's a repackaged Apache Derby, and consequently quite powerful.