The below is the hibernate.cfg.xml
:
<?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="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="hibernate.connection.url">jdbc:derby://localhost:1527/XE</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
</session-factory>
</hibernate-configuration>
I wonder if it's always necessary to use hibernate.cfg.xml
in every Hibernate Application or there is any alternative way to configure Hibernate.
Hibernate Configuration Without XML And Using XML Files. In this article we are going to configure hibernate using java class i.e. without XML file and using XML file. We can configure hibernate using java class so no need to add hibernate.cfg.xml and can provide mapping of entities via annotated entity classes so no need to provide mapping files.
No, it's not mandatory to use hibernate.cfg.xml. Just don't use .configure (). Hibernate will look for hibernate.cfg.xml if we use .configure ().
Hibernate facilitates to provide the configurations either in an XML file (like hibernate.cfg.xml) or properties file (like hibernate.properties). An instance of Configuration class allows specifying properties and mappings to applications.
I believe it is because of your configure () call on the Configuration object. Try removing that and hibernate will not look for the non-existent file.
You can do this by setting the properties using java
public class TestHibernate {
public static void main(String arg[]) {
Properties prop= new Properties();
prop.setProperty("hibernate.connection.url", "jdbc:mysql://<your-host>:<your-port>/<your-dbname>");
//You can use any database you want, I had it configured for Postgres
prop.setProperty("dialect", "org.hibernate.dialect.PostgresSQL");
prop.setProperty("hibernate.connection.username", "<your-user>");
prop.setProperty("hibernate.connection.password", "<your-password>");
prop.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
prop.setProperty("show_sql", true); //If you wish to see the generated sql query
SessionFactory sessionFactory = new Configuration().addProperties(prop).buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Customer user = new Customer(); //Note customer is a POJO maps to the customer table in the database.
user.setName("test");
user.setisActive(true);
session.save(user);
session.getTransaction().commit();
session.close();
}
}
@Entity
@Table(name = "customer", uniqueConstraints = {
@UniqueConstraint(columnNames = "customerid")})
public class Customer implements Serializable{
private String name;
private int customerid;
private boolean isActive;
public Customer() {
}
public Customer(String name, int customerId, boolean isActive) {
this.name = name;
this.customerid = customerId;
this.isActive = isActive;
}
/**
* GETTERS
*/
@Column(name = "name", unique = false, nullable = false, length = 100)
public String getname() {
return name;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "customerid", unique = true, nullable = false)
public int getcustomerid() {
return customerid;
}
@Column(name = "isactive", unique = false, nullable = false)
public boolean getisactive() {
return isActive;
}
/**
* SETTERS
*/
public void setname(String name) {
this.name = name;
}
public void setisactive(boolean isActive) {
this.isActive = isActive;
}
}
It is not necessary, in the session factory bean configuration you can pass these values directly using
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.show_sql"></prop>
<prop key="hibernate.use_outer_join">true</prop>
</props>
</property>
ex
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.show_sql"></prop>
<prop key="hibernate.use_outer_join">true</prop>
<prop key="hibernate.jdbc.batch_size" >30</prop>
<prop key="hibernate.connection.SetBigStringTryClob">true</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>mypackage</value>
</list>
</property>
</bean>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With