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>
Comments (0)

Spring + Hibernate Validation Example

 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;
Comments (0)

Spring + Hibernate Tutorial

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);
Comments (0)
Go to Top