import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
import
org.hibernate.HibernateException;
import
org.hibernate.Session;
import
org.hibernate.SessionFactory;
import
org.hibernate.Transaction;
import
org.hibernate.cfg.Configuration;
import
com.gfg.hibernate.pojo.Qualification;
import
com.gfg.hibernate.pojo.Teacher;
public
class
TeacherRepository {
private
static
SessionFactory factory;
public
static
void
main(String[] args) {
try
{
factory =
new
Configuration().configure().buildSessionFactory();
}
catch
(Throwable ex) {
System.err.println(
"Failed to create sessionFactory object."
+ ex);
throw
new
ExceptionInInitializerError(ex);
}
TeacherRepository teacherRepository =
new
TeacherRepository();
HashMap set =
new
HashMap();
set.put(
"Physics"
,
new
Qualification(
"BSC"
));
set.put(
"ComputerScience"
,
new
Qualification(
"MSC"
));
set.put(
"ProjectManagement"
,
new
Qualification(
"PMP"
));
Integer teacherId = teacherRepository.addData(
"GeekA"
,
"GeekA"
,
40000
, set);
set =
new
HashMap();
set.put(
"Physics"
,
new
Qualification(
"BSC"
));
set.put(
"ComputerScience"
,
new
Qualification(
"MSC"
));
set.put(
"ProjectManagement"
,
new
Qualification(
"PMP"
));
teacherId = teacherRepository.addData(
"GeekB"
,
"GeekB"
,
40000
, set);
teacherRepository.listData();
teacherRepository.updateData(
1
,
45000
);
teacherRepository.listData();
teacherRepository.deleteData(
1
);
System.out.println(
"After deleting the 1st record.."
);
teacherRepository.listData();
}
public
Integer addData(String fname, String lname,
int
salary, HashMap qualifications){
Session session = factory.openSession();
Transaction tx =
null
;
Integer teacherId =
null
;
try
{
tx = session.beginTransaction();
Teacher teacher =
new
Teacher(fname, lname, salary);
teacher.setQualifications(qualifications);
teacherId = (Integer) session.save(teacher);
tx.commit();
}
catch
(HibernateException e) {
if
(tx!=
null
) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
return
teacherId;
}
public
void
listData( ){
Session session = factory.openSession();
Transaction tx =
null
;
try
{
tx = session.beginTransaction();
List teachers = session.createQuery(
"FROM Teacher"
).list();
for
(Iterator iterator1 = teachers.iterator(); iterator1.hasNext();){
Teacher teacher = (Teacher) iterator1.next();
System.out.print(
"First Name: "
+ teacher.getFirstName());
System.out.print(
" Last Name: "
+ teacher.getLastName());
System.out.println(
" Salary: "
+ teacher.getSalary());
Map teacherMap = teacher.getQualifications();
System.out.println(
"Qualification: "
+
(((Qualification)teacherMap.get(
"Physics"
)).getName()));
System.out.println(
"Qualification: "
+
(((Qualification)teacherMap.get(
"ComputerScience"
)).getName()));
System.out.println(
"Qualification: "
+
(((Qualification)teacherMap.get(
"ProjectManagement"
)).getName()));
}
tx.commit();
}
catch
(HibernateException e) {
if
(tx!=
null
) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
}
public
void
updateData(Integer teacherId,
int
salary ){
Session session = factory.openSession();
Transaction tx =
null
;
try
{
tx = session.beginTransaction();
Teacher teacher = (Teacher)session.get(Teacher.
class
, teacherId);
teacher.setSalary( salary );
session.update(teacher);
tx.commit();
}
catch
(HibernateException e) {
if
(tx!=
null
) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
}
public
void
deleteData(Integer teacherId){
Session session = factory.openSession();
Transaction tx =
null
;
try
{
tx = session.beginTransaction();
Teacher teacher = (Teacher)session.get(Teacher.
class
, teacherId);
session.delete(teacher);
tx.commit();
}
catch
(HibernateException e) {
if
(tx!=
null
) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
}
}