Can we customize Hibernate without hibernate.cfg.xml

The following is 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 you always need to use hibernate.cfg.xml in every Hibernate application, or is there an alternative way to configure Hibernate.

+4
source share
3 answers

You can specify hibernate.cfg.xml properties as an attachment of properties in spring bean.xml for example

 <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> 

In the same way, you can specify all properties in spring as a dependency for sessionFacory

0
source

There is no need for a factory bean session 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> 
+4
source

You can do this by setting properties with 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; } } 
+2
source

Source: https://habr.com/ru/post/1488417/


All Articles