Posts tagged Hibernate
OpenSessionInViewInterceptor for Spring + Hibernate3
- keeps the hibernate session open long enough for the view to render what is needed before it is closed
- allows access to lazy loaded associations without “LazyInitializationException” exception
applicationContext.xml <bean id="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> <property> name="flushModeName"> <value>FLUSH_AUTO</value> </property> </bean>
<property name="interceptors"> <list> <ref bean="openSessionInViewInterceptor" /> </list> </property>
OpenSessionInViewFilter
web.xml <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping>
Spring + Hibernate Validation Example
Filed under Spring
dispatcher-servlet.xml <mvc:annotation-driven /> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
Controller.java @RequestMapping(value = "/save", method = RequestMethod.POST) public String saveTest(@ModelAttribute("test") @Valid Test test, BindingResult result) { //handle error if (result.hasErrors() || result.hasFieldErrors()) { return "testAdd"; }
Test.java @Entity @Table(name = "test") @Proxy(lazy = false) public class Test implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @NotEmpty private String name; private String sex;
Spring + Hibernate Tutorial
Filed under Spring
dispatcher-servlet.xml
<tx:annotation-driven transaction-manager="transactionManager"/>
<context:property-placeholder location="/WEB-INF/jdbc.properties" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.driver}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.user}" />
<property name="password" value="${database.password}" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>gov.bd.nea.db.Test</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.connection.pool_size">${hibernate.connection.pool_size}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>jdbc.properties database.driver=org.apache.derby.jdbc.ClientDriver database.url=jdbc:derby://localhost:1527/sample database.user=app database.password=app hibernate.dialect=org.hibernate.dialect.DerbyDialect hibernate.show_sql=true hibernate.connection.pool_size=5
Test.java import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import javax.validation.constraints.NotNull; import org.hibernate.annotations.Proxy; import org.hibernate.validator.constraints.NotEmpty; /** * * @author Asif */ @Entity @Table(name = "test") @Proxy(lazy = false) public class Test implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; private String sex; private String country; private String hobby; @Lob @Column(length = 100000) private byte[] file; //getter and setter methods }
TestDaoImpl.java import java.util.List; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; /** * * @author Asif */ @Repository("testDao") public class TestDaoImpl implements TestDao { @Autowired private SessionFactory sessionFactory; @Override public List<Test> getTestList() { return (List<Test>) sessionFactory.getCurrentSession().createCriteria(Test.class).list(); } @Override public void save(Test test) { sessionFactory.getCurrentSession().saveOrUpdate(test); } @Override public Test getTestById(Integer id) { return (Test) sessionFactory.getCurrentSession().load(Test.class, id); } }
TestService.java import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * * @author Asif */ @Service("testService") @Transactional public class TestServiceImpl implements TestService { @Autowired private TestDao testDao; @Override public List<Test> getTestList() { return testDao.getTestList(); } @Override public void saveTest(Test test) { testDao.save(test); } @Override public Test getTestById(Integer id){ return testDao.getTestById(id); } }
TestController.java @Controller @RequestMapping("/test") public class TestController { private static final Logger logger = Logger.getLogger(TestController.class); @Autowired private TestService testService; .... .... = testService.getTestById(id);