Hibernate知识学习:http://justsee.iteye.com/blog/1061576
注意Hibernate4在开发当中的一些改变 :http://snake-hand.iteye.com/blog/1995592
//首先在web.xml中加入OpenSessionInViewFilter过滤器
<filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter><filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在applicationContext.xml中的sessionFactory 中 添加<property name="hibernate.current_session_context_class">thread</property> 属性
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- 依赖注入数据源,正式上下文定义的dataSource --><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.MySQL5Dialecthibernate.hbm2ddl.auto=updatehibernate.show_sql=truehibernate.format_sql=falsehibernate.cache.use_second_level_cache=truehibernate.cache.use_query_cache=falsehibernate.cache.provider_class=org.hibernate.cache.EhCacheProviderhibernate.current_session_context_class=thread</value></property><!--通过配置文件的方式获取数据源--><property name="mappingResources"><list><!-- 以下用来列出所有的PO映射文件 --><value>hibernate.cfg.xml</value><value>test.cfg.xml</value></list></property> </bean>
在dao层部分的代码如下,通过sessionFactory可以获得当前的事务的session,通过session实现对数据库的操作
public class MessageDaoImpl implements MessageDao{private SessionFactory sessionFactory; public Session getSession() { return sessionFactory.getCurrentSession(); } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Overridepublic void saveMessage(TestMessage tm) {Session session = this.getSession();Transaction tran = session.beginTransaction();session.save(tm); tran.commit();}@Overridepublic String getMessage() {Session session = this.getSession();Transaction tran = session.beginTransaction();List<TestMessage> datas = session.createQuery("From TestMessage").list();tran.commit();return datas.get(7).getContent();}
}