Myeclipse2017 SSH整合
1.添加Spring支持
新建项目,右键项目 >Configure Facets>install Spring Facet
Spring支持添加完成后,src下会生成一个applicationContext.xml文件且Web.xml中也会自动生成如下配置。
2.添加SpringMVC支持
Spring集成的有SpringMVC,所以只需要进行相关的配置即可。
1.在src根目录下创建spring-servlet.xml,配置如下:
2.Web.xml添加如下配置:
OK,到这里Spring+SpringMVC已配置完毕。可以编写Controller层代码进行测试
路径:http://localhost:8080/Test/hello
3.添加Hibernate支持
1.新建链接DB [如果已有可跳过]
window>Show View>DB Browser>右键 new
2.添加Hibernate支持
1.与添加Spring支持类似:右键项目>Configure Facets>install Hibernate Facet
next>
>next
2.在applicationContext.xml手动添加数据库驱动
到这里Spring4.1+SpringMVC+Hibernate4.1就已经整合完毕了。
然后我配置一个HibernateTemplate4,用来进行CRUD操作,结果进行持久化时出现了如下错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
异常信息内容大概是,不允许在只读事务下进行写的操作。然后又百度了一波,大致原因是因为:Spring默认的事务是只读事务(readyOnly=true),不能进行增删改的操作。然后我在增删改的方法上加上了@Transactional(readyOnly=false),然后执行成功。
第一次写博客,如有错误请指出。谢谢