Is it possible to have a embedded database in a web application? - java

Is it possible to have a embedded database in a small web application? What I need is there should not be any need to install any database in the server machine. By just adding a jar in the folder the database should work.
I am using Java EE, and Netbeans as my IDE. If its possible, what are the open source databases that can be embedded.
Any pointers to some good tutorials will be more helpfull.

HSQLDB, a popular embedded database, is just one jar file that you can drop in your application.

SQLite is the big one. MySQL has an embedded server, but you need to purchase a commercial license for it. Firebird also has an embedded server which it's free.

I haven't tried that but thinking about it, I think you can. I have worked with HSQLDB before and all I had to do was to run the embedded db and then run my client. You can do this by creating a cmd script in Windows or .sh script in Linux.
Some embedded databases:
H2
HSQLDB
Java DB

Related

How to pack Java Desktop Application made using eclipse with MySQL database with all the Data?

I have made a JAVA Desktop Application using Eclipse and MySQL as a database. I want to use the application in another PC with all my created schema and data. How can I bundle or make an installation file so that it installs mysql with the required schema and the JAR file of my application into another pc?
Note: I know we can use embedded Database like H2, Sqlite but I want it to be done using MySQL only. So no suggestions on using other database for my application.
Not sure how your application architecture but below point or solution could help you.
Solution 1 :
You can create DDL for schema database and the insert data. Once your application successfully install, you just run the script to execute this DDL file. Can be done in automation installation script.
Solution 2 :
You can dump mysql and restore to other PC. No worry about the structure, it completely clone from the original including data. Can be done in automation installation script. Dump mysqlDB link
Solution 3 (not recommended):
You can copy entire mysql data in directory and paste to other machine mysql directory. Based on my experience, never success. But look at this guy link
There is a pro and cons using embedded SQL or centralize SQL. If you stick with this kind of architecture, you should consider use embedded SQL like you mention.

how Derby database works?

Wikipedia states that derby database can be embedded in a java application. Does it mean that we do not need to install a database server separately as if we were using Mysql for the same application?
Does it mean that we can simply ship a jar file with the database embedded in it, and not worry about installing a database server separately?
Yes you are right, Derby is a database internally supported by Java. This database can be of particular use when creating desktop applications or creating applications in which we do not want to install a database server on target machine.
Derby libraries can directly read database files that are held in JAR archives, so no need to install Database servers for this. Derby has all of the features that you would expect from a modern SQL database.

database attachement when creating .jar file

I have created a desktop application of shop management system and it is working well (runs on ide) but when I created a jar file of it and run this on another computer then it is not doing anything.
The problem which I figure it out is that the database is not attached with the .jar file.
Can anybody guide me?
Details:
Language : java
IDE: netbeans
Database: mysql server 5.1
First of all Mysql server doesn't support db Embedding feature.
You may consider changing the DBMS If you want to ship your database with the application.
apache derby
h2
and sun's distribution of JavaDB
These will help your current scenario or if you have simple light weight operations, You can use SQLite.

java apps with mysql database

I have prepared an application that is a small demo of Student information manipulation. I have stored information related to students in a MySQL DB. Now my application is working 100% on my computer. But I want that work everywhere without depending on Database! I mean I just want "WHEREVER MY .JAR FILE GOES, DATABASE SHOULD ALSO GO ALONG WITH THAT INSIDE .JAR FILE "
So anyone who is using my application or trying it, they can realize exact result of this application.
How can I make this possible? Please someone help me.
For that I have done the following things:
I have installed MySQL database on my computer.
I have created a database on that MySQL server
I have created some tables in the database with a lots of data.. this data is to be used in my whole application, even for login.
Now I want to deliver this application to various clients but my clients are not technical persons and I don't want to give instructions to each of my client to do the above four steps.
How can I integrate some functionality into my app so that they can use my database, Tables and Data automatically .
It would be much better if the code can install the MySQL database automatically from the setup file attached with the application.
How the applications available in the market manage information
Have you thought of using another database engine?
MySQL requires the server to be installed and configured, and it is a huge task to be done by an automatic installer.
What about using for example SQLite http://www.sqlite.org/ or Apache Derby http://db.apache.org/derby/. Both of them work by creating a file in your working dir, you could setup the database and populate data at install time
I have two suggestions for you:
A. Use SQLite instead of MySQL. SQLite is an embeddable database engine and does exactly what you need. You can simply copy the .sqlite file where all the information is stored and distribute it with your JAR file. Given that you've already written you app to use MySQL, this could mean making a few changes to your code.
There is a good SQLite jdbc driver at:
https://bitbucket.org/xerial/sqlite-jdbc
I've used it before, though not extensively.
B. Use a portable installation of MySQL. If you are using Windows these are available on the MYSQL page, look for the downloads marked "ZIP Archive" instead of "MSI Installer". These versions are portable in that they do not require an installation process, just unzip the file, and start the service. Your clients need to know how to start it up, of course. Perhaps you could create a shortcut for that.
Of course, the idea of MySQL being a network server is so that everyone in the enterprise works with the same data, by connecting to the same server. If your clients will use this application in various computers in the same company, you should consider having a single MySQL Server installed, and making the clients connect to that.
Hope this helps!

Externally browsing an Embedded JavaDB deployment

I created and deployed a javadb-powered portable swing application.
The app creates the javadb database folder as expected if it doesn't exist.
Now the time may come when I would need to browse that embedded database folder like I would using Mysql Query Browser or something. How do I do this?
Any JDBC base query tool should be able to connect to the database as long as your application is not running.
A list of tools is available in the Derby wiki:
http://wiki.apache.org/db-derby/UsesOfDerby#GUI_Tools

Categories