- 浏览: 383047 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
fuchenggangs:
手动抛出异常后想要自动回滚@Transactional(rol ...
spring mvc 与JPA/Hibernate的整合示例 -
springdata_spring:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
利用eclipse构建和部署maven工程 -
hzw2312:
好像这个事务不起作用呀!
@Transactional(rea ...
spring mvc 与JPA/Hibernate的整合示例 -
huhuhuhh:
类目清晰,感谢分享!
spring mvc 与JPA/Hibernate的整合示例 -
endual:
菜鸟问下,<!-- Spring Data Jpa配置 ...
spring mvc 与JPA/Hibernate的整合示例
通过maven融合ssh(struts2+spring2.5+hibernate3.3)是比较容易的事情。但也会出现一些问题需要注意的。
一、在tomcat启动时报错:
严重: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\lvlf\workspace\ssh\target\ssh\WEB-INF\classes\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
...
Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
...
原因分析:
jar文件版本冲突.从网上查询得知类: org.slf4j.impl.StaticLoggerBinder在slf4j-api 中是类的公有静态变量,而在slf4j-log4j12(slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar其中之一)中确是私有变量
解决办法:
在类路径先将slf4j-api.jar 删除,再导入同版本的slf4j-api-1.5.6.jar 和slf4j-log4j12-1.5.6.jar 具体到maven上就是加上:
二、注解驱动下的DAO无法继承HibernateDaoSupport类
可以在当前dao中为父类注入sessionFactory.如:
三、实体对象无法持久化
报错:org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity:...
Caused by: org.hibernate.MappingException: Unknown entity: cn.lvlf.ssh.demo.model.User...
原因分析:如果工程里存在不同的spring版本,也可能报错。但我这里经排查应是配置的问题。
解决办法:
最终还是配置错误。原先的hibernate配置为:
其实就错在这里。packagesToScan是要指定包名的。而我这里cn.lvlf.ssh.demo.model下就是实体类了。没有包了。所以将“*”去掉即可。或是将*的位置前移一位:cn.lvlf.ssh.demo.*也可。
哎,困扰多天了。原来如此!
四、关于不能在mvn -o package时自动生成数据库的问题
原以为现在可以在spring配置文件里用packageToScan属性指定实体类了,就不再需要hibernate.cfg.xml中注册实体类了。其实不是这样。反复试验证实hibernate.cfg.xml文件必不可少。不过感觉代码运行期不关它的事。它只在运行maven的hibernate插件maven-hibernate-plugs运行时和HibernateTools运行实用得上。所以我们仍然需要将所有的实体注册到hibernate.cfg.xml中
另外,pom.xml中好象也不需要显示的指定hibernate.cfg.xml.
当当然也可以将hibernate.cfg.xml中的hibernate属性配置移植到一个专有文件中如,jdbc.properties
那么,在maven-hibernate-plugin中就要加上如下配置了:
这样,maven-hibernate-plugin就会去jdbc.properties中读取相关的hibernate属性并在自动搜索到的hibernate.cfg.xml中查找要处理的实体类了。
一、在tomcat启动时报错:
严重: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\lvlf\workspace\ssh\target\ssh\WEB-INF\classes\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
...
Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
...
原因分析:
jar文件版本冲突.从网上查询得知类: org.slf4j.impl.StaticLoggerBinder在slf4j-api 中是类的公有静态变量,而在slf4j-log4j12(slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar其中之一)中确是私有变量
解决办法:
在类路径先将slf4j-api.jar 删除,再导入同版本的slf4j-api-1.5.6.jar 和slf4j-log4j12-1.5.6.jar 具体到maven上就是加上:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.6</version> </dependency>
二、注解驱动下的DAO无法继承HibernateDaoSupport类
可以在当前dao中为父类注入sessionFactory.如:
@Repository("userDao") public class UserDaoHibernate extends HibernateDaoSupport implements UserDao { private SessionFactory sessionFactory; @Autowired public void setSessionFactory0(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } }
三、实体对象无法持久化
报错:org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity:...
Caused by: org.hibernate.MappingException: Unknown entity: cn.lvlf.ssh.demo.model.User...
原因分析:如果工程里存在不同的spring版本,也可能报错。但我这里经排查应是配置的问题。
解决办法:
最终还是配置错误。原先的hibernate配置为:
<property name="packagesToScan" > <list> <value>cn.lvlf.ssh.demo.model.*</value> </list> </property>
其实就错在这里。packagesToScan是要指定包名的。而我这里cn.lvlf.ssh.demo.model下就是实体类了。没有包了。所以将“*”去掉即可。或是将*的位置前移一位:cn.lvlf.ssh.demo.*也可。
哎,困扰多天了。原来如此!
四、关于不能在mvn -o package时自动生成数据库的问题
原以为现在可以在spring配置文件里用packageToScan属性指定实体类了,就不再需要hibernate.cfg.xml中注册实体类了。其实不是这样。反复试验证实hibernate.cfg.xml文件必不可少。不过感觉代码运行期不关它的事。它只在运行maven的hibernate插件maven-hibernate-plugs运行时和HibernateTools运行实用得上。所以我们仍然需要将所有的实体注册到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 name="sessionFactory"> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">1234</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <property name="hibernate.hbm2ddl.auto">create-drop</property> <mapping class="cn.lvlf.ssh.demo.model.User"/> </session-factory> </hibernate-configuration>
另外,pom.xml中好象也不需要显示的指定hibernate.cfg.xml.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <phase>process-classes</phase> <goals> <goal>hbm2ddl</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> </dependencies> <configuration> <components> <component> <name>hbm2ddl</name> <implementation>annotationconfiguration</implementation> </component> </components> <componentProperties> <drop>true</drop> <jdk5>true</jdk5> <skip>${maven.test.skip}</skip> </componentProperties> </configuration> </plugin>
当当然也可以将hibernate.cfg.xml中的hibernate属性配置移植到一个专有文件中如,jdbc.properties
jdbc.driverClassName=${jdbc.driverClassName} jdbc.url=${jdbc.url} jdbc.username=${jdbc.username} jdbc.password=${jdbc.password} # Needed by Hibernate3 Maven Plugin defined in pom.xml hibernate.dialect=${hibernate.dialect} hibernate.hbm2ddl.auto=${hibernate.hbm2ddl.auto} hibernate.connection.username=${jdbc.username} hibernate.connection.password=${jdbc.password} hibernate.connection.url=${jdbc.url} hibernate.connection.driver_class=${jdbc.driverClassName}
那么,在maven-hibernate-plugin中就要加上如下配置了:
<componentProperties> ... <propertyfile>target/ssh/WEB-INF/classes/jdbc.properties</propertyfile> ... </componentProperties>
这样,maven-hibernate-plugin就会去jdbc.properties中读取相关的hibernate属性并在自动搜索到的hibernate.cfg.xml中查找要处理的实体类了。
发表评论
-
spring mvc 与JPA/Hibernate的整合示例
2013-07-17 16:53 35989一、首先通过maven加入spring、jpa和hiberna ... -
【JPA】基础知识
2012-03-04 20:22 1034JPA是java编程领域的ORM标准。最著名的参考实现是hib ... -
JAXB的基本应用
2012-02-29 00:13 1320JAXB(Java API for XML Binding)是 ... -
log4j的应用与配置
2012-01-31 22:25 1191在java编程领域,log4j已经是事实上的日志输出工具。不但 ... -
springsecurity学习笔之二:实现一个基于数据库的简单权限系统
2012-01-23 14:35 2008这里在一个web工程中,通过三张表,实现用户、角色、权限的关系 ... -
springsecurity学习笔记之一:安全架构的理解
2012-01-20 09:45 1484计划将springsecurity的引入新的项目中。开始学习。 ... -
activeMO学习笔记二:发布和订阅
2012-01-16 14:57 1451其实学习activeMQ的初衷就是要找一个能够实现异步消息的发 ... -
activeMO学习笔记一:开始自己的第一个mq
2012-01-14 14:01 1542因为项目的需要,在构思系统的架构设计上,想到了ActiveMQ ... -
cxf学习笔记之传递附件
2012-01-12 09:34 4636cxf是jws的实现,上传二进制文件主要借助MTOM来实现,只 ... -
cxf学习笔记之传递复杂对象
2012-01-10 14:52 3738设计思路,创建一个人员注册的web服务。接受客户端传递的人员信 ... -
ie的进度条总也走不完
2011-01-11 21:06 1141多年前就发现跑着的系统中,时常看见ie的进度条总也走不完。但事 ... -
什么是工作流?
2010-12-29 18:53 937项目要用到工作流,给自己补一课。 就是“业务过程的部分或整体 ... -
特定环境下的应用服务器的时差问题
2010-04-02 10:59 1197最近遇到希望的问题。在window2008+weblogic1 ... -
给tomcat的Dos窗口命名
2010-01-07 14:04 3123做javaee开发,离不了web容器,tomcat可以说是最常 ... -
cxf学习笔记之结合spring创建客户端
2009-12-28 18:46 1541这个比较迷惑人。。。至少对我这个初学者来说是如此。后面解释原因 ... -
cxf学习笔记之结合spring创建服务端
2009-12-28 18:43 2144刚起步时实际上服务端是最简单的。 一、加入cxf支持 简单的说 ... -
cxf学些过程中的一些问题
2009-12-27 18:24 37711、 2009-12-27 18:19:02 org.apac ... -
数据源的两种配置
2009-10-09 10:27 1162开发的应用系统通常可以对数据源进行多种配置。 1、开发过程中往 ... -
常量类与属性文件在开发中的使用技巧
2009-08-13 16:48 1026开发中经常会将一些常用的或常修改的数据记录到常量类或属性文件中 ... -
过滤器在web开发中的应用
2009-04-07 15:53 1032在现在的web开发中,使用Filter来完成一些支撑性的工作是 ...
相关推荐
ssh的做简单的maven的配置文件,pom文件只要放入maven就会自动配置
mvn archetype:create -DgroupId=packageName -DartifactId=projectName 2. 创建Maven的Web项目: mvn archetype:create -DgroupId=packageName -DartifactId=webappName -...
mvn.bat
利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的...
mvn常用命令,平时使用比较多的,相信会很要帮助。
机器学习mvn实例。分为线性和非线性。适合初学者
基于maven的ssh2框架项目
mvn install单独jar到仓库使用方法举例
Cmd执行mvn clean package 命令使用文档
java web编写过程中需要用很多eclipse 插件,mvn是常用的工具之一,学会mvn命令对maven编程有很大帮助。
通过mvn坐标,下载jar包
mvn安装配置+环境变量配置mvn安装配置+环境变量配置mvn安装配置+环境变量配置mvn安装配置+环境变量配置
mvn_resp.rar
mac下mvn搭建web工程
springmvc+mybats+freemark(mvn)
通过bat 简单实现 导出exlipase里mvn项目里的jar包
关于Maven在使用中常用的一些命令
NULL 博文链接:https://yunlong167167.iteye.com/blog/2342629
一个简单的爬虫例子。使用java实现。更多毕设资源或课程设计资源,请访问博主的资源。或者找博主要。1271474283@qq.com
hello, I am ok.