Java Hibernate
Rules available in this category:
- Always_call_addClass_instead_of_addResource_to_add_a_mapping_to_a_Configuration
- Always_roll_back_any_active_transactions_in_catch_blocks
Rule 1: Always_call_addClass_instead_of_addResource_to_add_a_mapping_to_a_Configuration
Severity:
Medium
Rule:
Using the addClass method can be better than using the addResource method since it eliminates the need for hardcoded mapping filenames.
Reason:
Using the addClass method can be better than using the addResource method since it eliminates the need for hardcoded mapping filenames.
Usage Example:
public class Test
{
public void initConfig()
{
Configuration cfg = new Configuration().addResource("myFile.hbm.xml"); //VIOLATION
}
}
Should be written as:
public class Test
{
public void initConfig()
{
Configuration cfg = new Configuration().addClass(MyFile.class); //FIXED
}
}
class MyFile
{
//some implementation of a mapped MyFile class
}
Reference:
http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configuration.html
Rule 2: Always_roll_back_any_active_transactions_in_catch_blocks
Severity:
Medium
Rule:
If a Hibernate transaction is started in a try block, one should make sure to roll back that transaction in case of an exception.
Reason:
If a Hibernate transaction is started in a try block, one should make sure to roll back that transaction in case of an exception.
Usage Example:
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test
{
public static void main(String[] args)
{
Session session = null;
SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory();
Transaction tx = null;
try
{
session = sessionFactory.openSession();
tx = session.beginTransaction();
//...
tx.commit();
}
catch (HibernateException e) //VIOLATION
{
System.out.println(e.getMessage());
}
finally
{
session.flush();
session.close();
}
}
}
Should be written as:
public class Test
{
public static void main(String[] args)
{
Session session = null;
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Transaction tx = null;
try
{
session = sessionFactory.openSession();
tx = session.beginTransaction();
//...
tx.commit();
}
catch (HibernateException e)
{
if (tx!= null)
{
tx.rollback(); // FIXED
}
System.out.println(e.getMessage());
}
finally
{
session.flush();
session.close();
}
}
}
Reference:
http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html