import
com.gfg.sortedsetmapping.pojo.Company;
import
com.gfg.sortedsetmapping.pojo.Freelancer;
import
java.util.List;
import
java.util.Set;
import
java.util.TreeSet;
import
org.hibernate.HibernateException;
import
org.hibernate.Session;
import
org.hibernate.SessionFactory;
import
org.hibernate.Transaction;
import
org.hibernate.cfg.Configuration;
public
class
SortedSetMappingPatternOfStoringData {
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);
}
TreeSet companySet1 =
new
TreeSet();
companySet1.add(
new
Company(
"Company A"
));
companySet1.add(
new
Company(
"Company B"
));
TreeSet companySet2 =
new
TreeSet();
companySet2.add(
new
Company(
"Company A"
));
companySet2.add(
new
Company(
"Company C"
));
companySet2.add(
new
Company(
"Company E"
));
Freelancer freelancer1
=
new
Freelancer(
"Freelancer A"
,
20
,
1000
);
freelancer1.setCompanies(
companySet1);
Freelancer freelancer2
=
new
Freelancer(
"Freelancer B"
,
20
,
2000
);
freelancer2.setCompanies(
companySet2);
SortedSetMappingPatternOfStoringData
sortedMapMappingPatternOfStoringData
=
new
SortedSetMappingPatternOfStoringData();
Integer freelancerId1
= sortedMapMappingPatternOfStoringData
.addFreelancer(freelancer1);
Integer freelancerId2
= sortedMapMappingPatternOfStoringData
.addFreelancer(freelancer2);
sortedMapMappingPatternOfStoringData
.listFreelancerAndCompanyDetails();
}
public
Integer addFreelancer(Freelancer freelancer)
{
Session session = factory.openSession();
Transaction tx =
null
;
Integer languageId =
null
;
try
{
tx = session.beginTransaction();
languageId = (Integer)session.save(freelancer);
tx.commit();
}
catch
(HibernateException e) {
if
(tx !=
null
)
tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
return
languageId;
}
public
void
listFreelancerAndCompanyDetails()
{
Session session = factory.openSession();
Transaction tx =
null
;
try
{
tx = session.beginTransaction();
List<Freelancer> freelancers
= session.createQuery(
"FROM Freelancer"
)
.list();
for
(Freelancer freelancer : freelancers) {
System.out.println(
"Freelancer Name: "
+ freelancer.getFreelancerName());
System.out.println(
"Freelancer Age: "
+ freelancer.getFreelancerAge());
System.out.println(
"Price Per Hour: "
+ freelancer.getPricePerHour());
Set<Company> companies
= freelancer.getCompanies();
for
(Company company : companies) {
System.out.println(
"Company Name:"
+ company.getCompanyName());
}
}
tx.commit();
}
catch
(HibernateException e) {
if
(tx !=
null
)
tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
}
}