Develop Hibernate Application, in which we can perform account retrieve operation from Account table on MySQL Database?
public class Account {
private int accNumber;
private String name;
private double balance;
public int getAccNumber() {
return accNumber;
}
public void setAccNumber(int accNumber) {
this.accNumber = accNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Account [accNumber=" + accNumber + ", name=" + name
+ ", balance=" + balance + "]";
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
The Account Persistence class shown in the preceding code declares three persistence fields accNumber, name, balance of types int, String, double respectively.
As discussed earlier, Hibernate requires a small amount of meta data description for persistent class, which is specified using the Account.hbm.xml file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.gurugubelli.pojo.Account" table="account">
<id name="accNumber">
<column name="accountNumber" />
</id>
<property name="name" length="20" />
<property name="balance" column="balance" />
</class>
</hibernate-mapping>
The Account.hbm.xml file describes the mappings for Account persistence class. As discussed earlier, it is recommended to save the mapping file name <persistent class name>.hbm.xml. However, it is not mandatory to follow this convention. We can use any filename.
Note:
Note:
- Xml is a case –sensitive mark-up language.
- Every Xml file contains the root tag. And whatever tag we are opened in the xml compulsory we can close.
- Xml file contains either DTD (Document Type Definition) or XSD (Xml Schema Definition).
- DTD and XSD are techniques used to frame the rules that are required to construct an xml document.
- Now, let us configure the Hibernate configuration file by specifying the configuration parameters such as connection details, hibernate properties and mapping information.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost/gurugubelli</property>
<property name="connection.username">gurugubelli</property>
<property name="connection.password">gurugubelli</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="Account.hbm.xml" />
</session-factory>
</hibernate-configuration>
The hibernate.cfg.xml configuration file is using oracle Jdbc thin driver to connect to database for persistence operation. Here we have configured Hibernate properties dialect, show_sql and hbm2ddl.auto properties.
show-sql: if the 'show_sql' value is true we can view all the hibernate generated SQL queries in the console.
hbm2ddl.auto: It has the following values
hbm2ddl.auto: It has the following values
a. create
b. update
c. create-drop
a) create: If its value is create while running the application
Case 1: table does not exist
Hibernate creates a new table based on the mapping file configurations.
Case 2: table exists
b) Update: If its value is update while running the application
Case 1 : table does n't exist
Create a new table based on the mapping file configurations
Case 2 : table exists
c) create-drop :
if hbm2ddl.auto property value is create-drop then hibernate creates the a new table when the session-factory object is created. And drops the table when the sessionFactory is closed.
package com.gurugubelli.client;
import java.io.Serializable;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import com.gurugubelli.pojo.Account;
public class TestApp {
public static void main(String[] args) {
Configuration configuration = new Configuration()
.configure("hibernate.cfg.xml");
SessionFactory factory = configuration.buildSessionFactory();
Session session = factory.openSession();
TestApp testApp = new TestApp();
Account accountObj = new Account();
accountObj.setAccNumber(1234);
accountObj.setName("Gurugubelli");
accountObj.setBalance(30000);
int accountNumber = testApp.createAccount(session, accountObj);
System.out.println("Account number created with: " + accountNumber);
Account account = testApp.getAccountDetails(session, accountNumber);
if (account.getAccNumber() >= 0) {
System.out.println("\n===============");
System.out.println("Account Details");
System.out.println("===============");
System.out.println("Name :" + account.getName());
System.out.println("Number :" + account.getAccNumber());
System.out.println("Balance:" + account.getBalance());
} else {
System.out.println("Account " + accountNumber + " Not Found");
}
session.close();
}
public int createAccount(Session session, Account accountObj) {
Serializable number = session.save(accountObj);
session.beginTransaction().commit();
return (int) number;
}
public Account getAccountDetails(Session session, int accountNumber) {
Object accountObj = session.get("com.gurugubelli.pojo.Account",
accountNumber);
Account account = (Account) accountObj;
return account;
}
}
To execute the above application we need to set the following jar files in the class path: (download hibernate-release-x.x.x.Final.zip file and extract, In that folder add the .jar libraries under lib\required folder):Remember: Along with the hibernate jars we must include one more jar file, which is nothing but related to our database, this is depending on your database.
Ex: mysql-connector-java-5.1.37-bin.jar file
Hibernate Application Using MySQL Database
Reviewed by Gurugubelli Technologies
on
January 01, 2017
Rating:
No comments: