本示例演示springMVC与Spring与Hibernate集成(增删改查)
(可先运行数据库sql文件,生成2张表,数据库配置位于applicationContext.xml)
提示:jar包使用原则,尽可能少,等异常时再引入缺失的包。可避免包冲突的疑难杂症
实现步骤(共5步)
1、引入hibernate4.1的jar以及spring3.2.3的jar,在web.xml注册spring和springMVC框架
2、托管dataSource和sessionFactory
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost/test">
</property>
<property name="username" value="root"></property>
<property name="password" value="sa"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="configLocations">
<list>
<value>classpath*:org/entity/hbm.xml</value>
</list>
</property>
</bean>
3、使用注解定义实体类,并注册,定义各层接口以及实现类,并托管依赖注入。(相关文档:entity目录下所有类和xml)
若用注解定义定体,需要定义
@Entity
@Table(name="表名")
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@OneToMany(targetEntity=多方实体类名.class,cascade=CascadeType.ALL)
@Fetch(FetchMode.SELECT)//若采用JOIN则关联数据也会加载,影响效率
//updatable=false很关键,如果没有它,在级联删除的时候就会报错(反转的问题)
@JoinColumn(name="外键列",updatable=false)
本示例,2个实体中一个为注解实现,另一个为配置文件实现,均在hbm.xml中注册。
spring将加载hbm.xml文件,hbm.xml主要为了方便团队开发,集中引入配置文件。
最后需要在spring的sessionFactory中注入集中配置文件的定位,如下:
<property name="configLocations">
<list>
<value>classpath*:org/entity/hbm.xml</value>
</list>
</property>
4、解决 No Session found for current thread异常。
第1种解决选择:web.xml配置过滤器(不推荐,因为这个过滤器是一把双刃剑)
<filter>
<filter-name>openSession</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSession</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第2种解决选择,配置切面事务托管(推荐)
<context:annotation-config />
<!-- 定义事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<!-- 不同项目,只需要修改下面的切入点配置表达式 -->
<aop:advisor advice-ref="txAdvice" pointcut="execution(* org.dao..*.*(..))" />
</aop:config>
5、添加aopalliance.jar和aspectjweaver.jar(额外添加)
检查spring的xml文档的命名空间引用和xsd声明。
6、增删改查操作
http://127.0.0.1:8080/smvc13
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SpringMVC + Hibernate4 + JQuery + Ajax + MySQL整合 (418个子文件)
UploadAction.class 4KB
UploadAction.class 4KB
UploadAction.class 4KB
UploadAction.class 4KB
UploadAction.class 4KB
CityAction.class 3KB
UserAction.class 3KB
UserAction.class 3KB
UserAction.class 3KB
UploadAction.class 3KB
CityDaoImpl.class 2KB
Cityinfo.class 2KB
UserAction.class 2KB
UserAction.class 2KB
HelloController.class 1KB
Countyinfo.class 1KB
Countyinfo.class 1KB
CityAction.class 1KB
UserAction.class 1KB
User2Action.class 1KB
Cityinfo.class 1KB
CityBizImpl.class 1KB
BookAction.class 1KB
CityDaoImpl.class 1KB
UserAction.class 1KB
UserAction.class 1KB
UserAction.class 1KB
CityAction$1.class 927B
StaticAction.class 913B
Userinfo.class 821B
Userinfo.class 821B
Userinfo.class 821B
Userinfo.class 821B
Userinfo.class 821B
Userinfo.class 821B
CityBizImpl.class 744B
UserBizImpl.class 657B
UserBizImpl.class 657B
ICityBiz.class 380B
ICityDao.class 380B
Te.class 231B
IUserBiz.class 161B
IUserBiz.class 161B
ICityBiz.class 146B
ICityDao.class 146B
.classpath 3KB
.classpath 3KB
.classpath 3KB
.classpath 3KB
.classpath 3KB
.classpath 3KB
.classpath 3KB
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 2KB
.classpath 571B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.container 49B
wzjpagination.css 1KB
pop.css 690B
Thumbs.db 399KB
hibernate-core-4.1.4.Final.jar 4.21MB
aspectjweaver.jar 1.8MB
jsf-impl.jar 1.15MB
spring-core-3.2.3.RELEASE.jar 847KB
spring-core-3.2.3.RELEASE.jar 847KB
spring-context-3.2.3.RELEASE.jar 843KB
spring-context-3.2.3.RELEASE.jar 843KB
mysql-connector-java-5.1.7-bin.jar 693KB
mysql-connector-java-5.1.7-bin.jar 693KB
javassist-3.15.0-GA.jar 633KB
spring-webmvc-3.2.3.RELEASE.jar 622KB
spring-webmvc-3.2.3.RELEASE.jar 622KB
spring-web-3.2.3.RELEASE.jar 611KB
spring-web-3.2.3.RELEASE.jar 611KB
spring-beans-3.2.3.RELEASE.jar 593KB
spring-beans-3.2.3.RELEASE.jar 593KB
commons-collections-3.2.jar 558KB
commons-collections-3.2.jar 558KB
spring-test-3.2.3.RELEASE.jar 445KB
spring-test-3.2.3.RELEASE.jar 445KB
antlr-2.7.7.jar 435KB
jstl-1.2.jar 405KB
spring-jdbc-3.2.3.RELEASE.jar 396KB
spring-jdbc-3.2.3.RELEASE.jar 396KB
共 418 条
- 1
- 2
- 3
- 4
- 5
资源评论
发扬光大
- 粉丝: 144
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功