Advertisement
package decodejava;
public class Customer_Account
{
int id;
String name;
int amount;
int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
}
package decodejava;
import java.util.List;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
public class CustomerDAO
{
private HibernateTemplate hibernateTemplate;
private TransactionTemplate transactionTemplate;
//Getter for TransactionTemplate
public TransactionTemplate getTransactionTemplate()
{
return transactionTemplate;
}
//Setter for TransactionTemplate
public void setTransactionTemplate(TransactionTemplate transactionTemplate)
{
this.transactionTemplate = transactionTemplate;
}
//Getter for HibernateTemplate
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
//Setter for HibernateTemplate
public void setHibernateTemplate(HibernateTemplate hibernateTemplate)
{
this.hibernateTemplate = hibernateTemplate;
}
//Adding a customer
public void addCustomer(Customer_Account c)
{
transactionTemplate.execute(new TransactionCallback<Object>() {
//Anonymous class implementing TransactionCallback interface and implementing its doInTransaction() method
@Override
public Object doInTransaction(TransactionStatus ts)
{
try
{
hibernateTemplate.save(c);
}
catch(Exception e)
{
ts.isRollbackOnly(); //Transaction is rolled back on the arrival of an Exception
}
return null;
}
}); //Anonymous class ends.
}
//Deleting a customer
public void deleteCustomer(int id)
{
transactionTemplate.execute(new TransactionCallback<Object>() {
//Anonymous class implementing TransactionCallback interface and implementing its doInTransaction() method
@Override
public Object doInTransaction(TransactionStatus ts)
{
try
{
Customer_Account c=hibernateTemplate.get(Customer_Account.class,id);
hibernateTemplate.delete(c);
}
catch(Exception e)
{
ts.isRollbackOnly(); //Transaction is rolled back on the arrival of an Exception
}
return null;
}
}); //Anonymous class ends.
}
//Extracting a count of all the customers
public int countCustomer()
{
List<Customer_Account> list =hibernateTemplate.loadAll(Customer_Account.class);
return list.size();
}
//Getting a List of all customers from database
public List<Customer_Account> getAllCustomer()
{
List<Customer_Account> list =hibernateTemplate.loadAll(Customer_Account.class);
return list;
}
//Transaction method i.e. depositing an amount from an account
public void depositAmount(int id, int amount)
{
transactionTemplate.execute(new TransactionCallback<Object>() {
//Anonymous class implementing TransactionCallback interface and implementing its doInTransaction() method
@Override
public Object doInTransaction(TransactionStatus ts)
{
try
{
Customer_Account cust = getHibernateTemplate().get(Customer_Account.class, id);
cust.setAmount(cust.getAmount() + amount);
getHibernateTemplate().update(cust);
}
catch(Exception e)
{
ts.isRollbackOnly(); //Transaction is rolled back on the arrival of an Exception
}
return null;
}
}); //Anonymous class ends.
}
//Transaction method i.e. withdrawing an amount from an account
public void withdrawAmount(int id, int amount)
{
transactionTemplate.execute(new TransactionCallback<Object>() {
//Anonymous class implementing TransactionCallback interface and implementing its doInTransaction() method
@Override
public Object doInTransaction(TransactionStatus ts)
{
try
{
Customer_Account cust = getHibernateTemplate().get(Customer_Account.class, id);
cust.setAmount(cust.getAmount() - amount);
getHibernateTemplate().update(cust);
}
catch(Exception e)
{
ts.isRollbackOnly(); //Transaction is rolled back on the arrival of an Exception
}
return null;
}
}); //Anonymous class ends.
}
}
Advertisement
package decodejava;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Utility {
public static void main(String[] args)
{
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.beans.xml");
CustomerDAO customerDAO = context.getBean("CustomerDAOBean",CustomerDAO.class);
System.out.println("Creating a table in database");
customerDAO.createTable();
System.out.println("Adding the customers");
customerDAO.addCustomer(1, "First Customer", 1000, 23);
customerDAO.addCustomer(2, "Second Customer", 2000, 27);
customerDAO.addCustomer(3, "Third Customer", 3000, 21);
System.out.println("Getting all the customers from the database");
List<Customer_Account> allCustomers = customerDAO.getAllCustomer();
for(Customer_Account cust : allCustomers)
{
System.out.println("Customer ID : " + cust.getId());
System.out.println("Customer Name : " + cust.getName());
System.out.println("Customer Balance Amount : " + cust.getAmount());
System.out.println("Customer Age : " + cust.getAge());
}
System.out.println("Getting the total count of all the Customers");
System.out.println("Total Customers : " + customerDAO.countCustomer());
System.out.println("Deleting a Customer with id = 2");
customerDAO.deleteCustomer(2);
System.out.println("Getting the new total count of all the Customers after deleting a customer");
System.out.println("Total Customers : " + customerDAO.countCustomer());
System.out.println("A customer with id = 1, is depositing an amount of 20000");
customerDAO.depositAmount(1, 20000);
System.out.println("A customer with id = 3, is withdrawing an amount of 500");
customerDAO.withdrawAmount(3, 500);
System.out.println("Getting all the customers from the database and their updated amount :");
List<Customer_Account> allCustomers2 = customerDAO.getAllCustomer();
for(Customer_Account cust : allCustomers2)
{
System.out.println("Customer ID : " + cust.getId());
System.out.println("Customer Name : " + cust.getName());
System.out.println("Customer Balance Amount : " + cust.getAmount());
System.out.println("Customer Age : " + cust.getAge());
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
">
<bean id="CustomerDAOBean" class="decodejava.CustomerDAO">
<property name="hibernateTemplate" ref="HibernateTemplateBean"></property>
<property name="transactionTemplate" ref="transactionTemplateBean"></property>
</bean>
<bean id="HibernateTemplateBean" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="SessionFactoryBean"></property>
<property name="checkWriteOperations" value="false"/>
</bean>
<bean id="transactionTemplateBean" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="txnManagerBean"></property>
</bean>
<bean id="txnManagerBean" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="SessionFactoryBean"></property>
</bean>
<bean id="SessionFactoryBean" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="mappingResources" value="customer.hbm.xml"></property>
<property name="dataSource" ref="dataSourceBean"></property>
<property name="hibernateProperties">
<value>
hibernate.hbm2ddl.auto=create
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.default_schema=system
</value>
</property>
</bean>
<bean id="dataSourceBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"></property>
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="username" value="system"></property>
<property name="password" value="promila21"></property>
</bean>
</beans>
Aug 11, 2018 3:52:22 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@26f0a63f: startup date [Sat Aug 11 15:52:22 2018]; root of context hierarchy
Aug 11, 2018 3:52:22 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [config.beans.xml]
Aug 11, 2018 3:52:24 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: oracle.jdbc.driver.OracleDriver
Aug 11, 2018 3:52:24 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.17.Final}
Aug 11, 2018 3:52:24 PM org.hibernate.cfg.Environment
INFO: HHH000206: hibernate.properties not found
Aug 11, 2018 3:52:24 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Aug 11, 2018 3:52:26 PM org.hibernate.dialect.Dialect
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
Hibernate: create sequence system.hibernate_sequence start with 1 increment by 1
Hibernate: create table system.Customer_Account (ID number(10,0) not null, Age number(10,0), Amount number(10,0), Name varchar2(255 char), primary key (ID))
Aug 11, 2018 3:52:28 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources
INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@672f11c2'
Aug 11, 2018 3:52:28 PM org.springframework.orm.hibernate5.HibernateTransactionManager afterPropertiesSet
INFO: Using DataSource [org.springframework.jdbc.datasource.DriverManagerDataSource@3e1162e7] of Hibernate SessionFactory for HibernateTransactionManager
Adding the customers
Hibernate: select system.hibernate_sequence.nextval from dual
Hibernate: insert into system.Customer_Account (Age, Amount, Name, ID) values (?, ?, ?, ?)
Hibernate: select system.hibernate_sequence.nextval from dual
Hibernate: insert into system.Customer_Account (Age, Amount, Name, ID) values (?, ?, ?, ?)
Hibernate: select system.hibernate_sequence.nextval from dual
Hibernate: insert into system.Customer_Account (Age, Amount, Name, ID) values (?, ?, ?, ?)
Getting all the customers from the database
Hibernate: select this_.ID as ID1_0_0_, this_.Age as Age2_0_0_, this_.Amount as Amount3_0_0_, this_.Name as Name4_0_0_ from system.Customer_Account this_
Customer ID : 1
Customer Name : First Customer
Customer Balance Amount : 1000
Customer Age : 23
Customer ID : 2
Customer Name : Second Customer
Customer Balance Amount : 2000
Customer Age : 27
Customer ID : 3
Customer Name : Third Customer
Customer Balance Amount : 3000
Customer Age : 21
Getting the total count of all the Customers
Hibernate: select this_.ID as ID1_0_0_, this_.Age as Age2_0_0_, this_.Amount as Amount3_0_0_, this_.Name as Name4_0_0_ from system.Customer_Account this_
Total Customers : 3
Deleting a Customer
Hibernate: select customer_a0_.ID as ID1_0_0_, customer_a0_.Age as Age2_0_0_, customer_a0_.Amount as Amount3_0_0_, customer_a0_.Name as Name4_0_0_ from system.Customer_Account customer_a0_ where customer_a0_.ID=?
Hibernate: delete from system.Customer_Account where ID=?
Getting the new total count of all the Customers after deleting a customer
Hibernate: select this_.ID as ID1_0_0_, this_.Age as Age2_0_0_, this_.Amount as Amount3_0_0_, this_.Name as Name4_0_0_ from system.Customer_Account this_
Total Customers : 2
A customer with id = 1, is depositing an amount of 20000
Hibernate: select customer_a0_.ID as ID1_0_0_, customer_a0_.Age as Age2_0_0_, customer_a0_.Amount as Amount3_0_0_, customer_a0_.Name as Name4_0_0_ from system.Customer_Account customer_a0_ where customer_a0_.ID=?
Hibernate: update system.Customer_Account set Age=?, Amount=?, Name=? where ID=?
A customer with id = 3, is withdrawing an amount of 500
Hibernate: select customer_a0_.ID as ID1_0_0_, customer_a0_.Age as Age2_0_0_, customer_a0_.Amount as Amount3_0_0_, customer_a0_.Name as Name4_0_0_ from system.Customer_Account customer_a0_ where customer_a0_.ID=?
Hibernate: update system.Customer_Account set Age=?, Amount=?, Name=? where ID=?
Getting all the customers from the database
Hibernate: select this_.ID as ID1_0_0_, this_.Age as Age2_0_0_, this_.Amount as Amount3_0_0_, this_.Name as Name4_0_0_ from system.Customer_Account this_
Customer ID : 1
Customer Name : First Customer
Customer Balance Amount : 21000
Customer Age : 23
Customer ID : 3
Customer Name : Third Customer
Customer Balance Amount : 2500
Customer Age : 21
Advertisement
Advertisement
Please check our latest addition
C#, PYTHON and DJANGO
Advertisement