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: