- 浏览: 389906 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 36065一、首先通过maven加入spring、jpa和hiberna ... -
【JPA】基础知识
2012-03-04 20:22 1068JPA是java编程领域的ORM标准。最著名的参考实现是hib ... -
JAXB的基本应用
2012-02-29 00:13 1375JAXB(Java API for XML Binding)是 ... -
log4j的应用与配置
2012-01-31 22:25 1296在java编程领域,log4j已经是事实上的日志输出工具。不但 ... -
springsecurity学习笔之二:实现一个基于数据库的简单权限系统
2012-01-23 14:35 2121这里在一个web工程中,通过三张表,实现用户、角色、权限的关系 ... -
springsecurity学习笔记之一:安全架构的理解
2012-01-20 09:45 1595计划将springsecurity的引入新的项目中。开始学习。 ... -
activeMO学习笔记二:发布和订阅
2012-01-16 14:57 1522其实学习activeMQ的初衷就是要找一个能够实现异步消息的发 ... -
activeMO学习笔记一:开始自己的第一个mq
2012-01-14 14:01 1597因为项目的需要,在构思系统的架构设计上,想到了ActiveMQ ... -
cxf学习笔记之传递附件
2012-01-12 09:34 4726cxf是jws的实现,上传二进制文件主要借助MTOM来实现,只 ... -
cxf学习笔记之传递复杂对象
2012-01-10 14:52 3788设计思路,创建一个人员注册的web服务。接受客户端传递的人员信 ... -
ie的进度条总也走不完
2011-01-11 21:06 1198多年前就发现跑着的系统中,时常看见ie的进度条总也走不完。但事 ... -
什么是工作流?
2010-12-29 18:53 970项目要用到工作流,给自己补一课。 就是“业务过程的部分或整体 ... -
特定环境下的应用服务器的时差问题
2010-04-02 10:59 1290最近遇到希望的问题。在window2008+weblogic1 ... -
给tomcat的Dos窗口命名
2010-01-07 14:04 3184做javaee开发,离不了web容器,tomcat可以说是最常 ... -
cxf学习笔记之结合spring创建客户端
2009-12-28 18:46 1582这个比较迷惑人。。。至少对我这个初学者来说是如此。后面解释原因 ... -
cxf学习笔记之结合spring创建服务端
2009-12-28 18:43 2181刚起步时实际上服务端是最简单的。 一、加入cxf支持 简单的说 ... -
cxf学些过程中的一些问题
2009-12-27 18:24 38061、 2009-12-27 18:19:02 org.apac ... -
数据源的两种配置
2009-10-09 10:27 1197开发的应用系统通常可以对数据源进行多种配置。 1、开发过程中往 ... -
常量类与属性文件在开发中的使用技巧
2009-08-13 16:48 1060开发中经常会将一些常用的或常修改的数据记录到常量类或属性文件中 ... -
过滤器在web开发中的应用
2009-04-07 15:53 1077在现在的web开发中,使用Filter来完成一些支撑性的工作是 ...
相关推荐
你可以通过执行简单的命令,如`mvn compile`进行编译,`mvn test`运行单元测试,`mvn package`打包项目,甚至`mvn deploy`将应用发布到服务器。Maven的生命周期和构建插件使得这些任务能够自动化执行,极大地提高了...
### SSH包冲突问题解决_sqlserver #### 背景与问题描述 在开发基于SSH(Struts、Spring、Hibernate)框架的应用程序时,经常会遇到由于不同框架之间或框架内部依赖库版本不一致导致的包冲突问题。这类问题往往表现...
这有助于解决因为配置不兼容导致的问题。 #### 13. `mvn eclipse:eclipse` 同样用于生成Eclipse项目文件,但这里的命令更简洁。它会根据项目的配置自动生成所需的Eclipse项目文件。 #### 14. `mvn deploy:deploy-...
6. **学习资源**:"mvn_ssh_01"可能包含的是一个基于Maven构建的SSH项目实例,其中可能包括了配置文件、源代码、测试用例等,是学习SSH整合的好材料。通过分析这个项目,可以更直观地了解SSH如何协同工作,以及如何...
mvn.bat
利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的Java SSH框架后台,利用Flex显示 利用Maven搭建的...
掌握Maven的基本使用方法对于进行Java项目的开发和维护至关重要。本文将详细介绍Maven中常用的命令及其应用场景。 #### 1. 显示Maven版本信息:`mvn -v` 该命令用于查看当前系统上安装的Maven版本以及Java版本等...
Maven 的强大之处在于其插件机制,`mvn jetty:run` 可以直接将项目部署到 Jetty 服务器运行,`mvn deploy:deploy-file` 用于上传自定义的 JAR 文件到远程仓库。 总之,理解并熟练使用这些 Maven 命令行,将有助于你...
通过设置请求方法(GET、POST等)和请求头,我们可以与服务器进行交互。 3. HTML解析:Java中有多种库可以解析HTML,如Jsoup,它提供了便捷的API来抓取和操作HTML文档,查找元素、提取文本、修改内容等。 二、...
`mvn release`是Maven项目管理工具中的一个插件,用于执行软件版本的发布流程。这个流程通常包括准备发布的新版本,创建源码和二进制的归档,然后在版本控制系统中提交这些更改。在本文中,我们将深入探讨`mvn ...
#### 六、常见问题与解决办法 - **错误:找不到或无法加载主类**:检查项目配置文件pom.xml中是否有遗漏的依赖项,或者是否正确指定了主类的位置。 - **错误:缺少资源文件**:确认项目的资源文件是否放在正确的目录...
mvn install单独jar到仓库使用方法举例
### Maven配置与常用命令详解 ...以上内容涵盖了Maven的基础配置及常见命令的使用方法,同时对POM文件的关键元素进行了详细介绍。通过这些内容的学习,可以帮助开发者更好地理解和使用Maven进行项目构建与管理。
MVN常用命令 MVN(Maven)是一款基于项目对象模型(POM)的项目管理工具,它可以帮助开发者管理项目的依赖关系、编译、测试、打包和部署。下面是MVN的常用命令: 创建Maven项目 1. 创建Maven的普通Java项目:`mvn...
在Java开发过程中,Maven(MVN)是一个广泛使用的依赖管理工具,它使得开发者能够方便地管理和构建项目。"mvn-download"这个话题是关于如何通过Maven的命令行工具来下载特定的JAR(Java Archive)包。下面将详细解释...
#### 三、解决内存溢出问题的方法 ##### 3.1 Windows环境 在Windows操作系统中,可以通过修改Maven的启动脚本来增加内存限制。具体步骤如下: 1. **定位文件**:找到Maven安装目录下的`bin`文件夹内的`mvn.bat`...
【标题】:“Maven搭建SSH工程” 在Java开发领域,SSH(Struts、Spring、Hibernate)是一个常见的Web应用开发框架组合。它结合了Struts的MVC设计模式、Spring的依赖注入以及Hibernate的对象关系映射功能,使得开发...
5. **解决依赖冲突**:当多个依赖有相同的包但版本不同时,Maven的依赖解析机制会按照“最接近原则”选择版本。如有冲突,可以在pom.xml中使用`<exclusions>`标签排除不需要的依赖。 6. ** profiles**:profiles...
** Maven的简单使用以及Maven搭建SSH ** Maven是一个强大的Java项目管理工具,它能够帮助开发者构建、管理和部署项目。Maven通过使用一个统一的项目对象模型(Project Object Model,POM)来描述项目,并利用插件...