MyEclipse 上使用sping+hibernate+mysql
以下为入门级别代码,高手请务见笑~
我的MyEclipse 上spring最高版是3.* 而hibernate 最高版本是4.* 在做项目时用的都是最高版,于是代码写好之后调试报了个异常,居然说spring 3.*与hibernate 4.* 某个地方不兼容!!推荐使用spring3.*+hibernate3.* 搭配!!于是就只能新建java项目重新贴代码~
由于之前的hibernate 4.* 访问mysql5.* 方言需要设成(org.hibernate.dialect.MySQLInno5DBDialect),换成hibernate3.* 之后方言也需要改成(org.hibernate.dialect.MySQLInnoDBDialect),spring中配置的bean类全名都需要进行相应的调整。
另:项目除了由myEclipse自动添加spring与hibernate引用,还需要单独引用个jar包(hibernate-jpa-2.0-api-1.0.1.Final.jar), http://zhidao.baidu.com/share/d7e7d8f60fc44a127ba702d43e71abec.html
OK,上面己将我记的坑写明了。现在开始贴代码了。
我的项目是参考IBM官网上的Demo改改调调。IBM网页:https://www.ibm.com/developerworks/cn/java/wa-spring2/
我的项目就是拿IBM上面在本地重新搭建,部分配置手工写写,写上自己的理解。
本地工程结构
那些java 基本都是直接拿来用,重点是配置文件的配置。
配置文件分两种,*.hbm.xml与*.xml *.hbm.xml为数据表映射文件;*.xml为spring 的bean配置核心。
*.hbm.xml就不说了,它是hibernate的基础.多对一,多的一方配置处理了属性另再加个标签<many-to-one>。一的一方,配置处理了属性另再加个标签<set>
来看看我的 applicationContext.xml 吧
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx"> <!-- definition data source -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:mysql:///test"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean> <!-- definition sessionFactory object -->
<bean id="sessionFactoryBean"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.query.substitutions">true 'T', false 'F'</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.c3p0.minPoolSize">5</prop>
<prop key="hibernate.c3p0.maxPoolSize">20</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>jackicalHibernate/Customer.hbm.xml</value>
<value>jackicalHibernate/Account.hbm.xml</value>
</list>
</property>
</bean> <!-- definition transaction manager object -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactoryBean" />
</bean> <!-- after this setting is Bean setting by author:jackical Datetime:2015-05-13 -->
<!-- Pass the session factory to our UserDAO -->
<bean id="customerDAOTarget" class="jackicalHibernate.CustomerDAOImpl">
<property name="sessionFactory"><ref local="sessionFactoryBean"/></property>
</bean> <bean id="userDAO"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref local="transactionManager"/></property>
<property name="target"><ref local="customerDAOTarget"/></property>
<property name="transactionAttributes">
<props>
<prop key="addCustomer">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>
分别来看看:
dataSource:定义数据访问基础信息(你看成数据库链接信息)。
sessionFactoryBean:hibernate打开前需要先申明sessionFactory 对像。
transactionManager:使用申明的sessionFactory 对像,打开事务管理器。
customerDAOTarget:使用Bean申明一个impl对象(数据操作实例)
userDAO:spring中对hibernate的事务的操作是使用aop来做的。见:http://uule.iteye.com/blog/893890
参考资料:
IBM一手资料 https://www.ibm.com/developerworks/cn/java/wa-spring2/
缺失jar包下载 http://zhidao.baidu.com/share/d7e7d8f60fc44a127ba702d43e71abec.html
事务介绍 http://uule.iteye.com/blog/893890
MyEclipse 上使用sping+hibernate+mysql的更多相关文章
- JSP+Spring+SpringMVC+Hibernate+Mysql实现的校园失物招领网站
项目简介 项目来源于:https://github.com/wenlongup/LostAndFound 因原github仓库无数据库文件,经过本人修改,现将该仓库重新上传至个人gitee仓库. ht ...
- 如何在MyEclipse上添加更换JRE
如何在myeclipse上添加更换JRE 由于兼容性的问题,有些WEB项目会依赖jdk的版本.如果需要更换jdk,那么,知道如何更换JRE的方法很有必要. 一种在myeclipse上添加和更换JRE的 ...
- 如何在一台服务器上安装两个mysql或者更多
如何在一台服务器上安装两个mysql 1 前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2 环境 mysql ...
- (转)如何在Windows上安装多个MySQL
原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...
- 【转载】Myeclipse如何自动创建hibernate
Myeclipse如何自动创建hibernate:http://jingyan.baidu.com/article/456c463b99f4370a583144a8.html An internal ...
- [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySql+PHP) Part II
接着上一节继续搭建我们的LNMP平台,接下来我们安装PHP相关的服务 sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5- ...
- [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySQL+PHP) Part IV
接下来我们去下载 WorePress 用最新的 3.7.1 下载地址是:http://cn.wordpress.org/wordpress-3.7.1-zh_CN.zip 我们先建立一个文件夹 /va ...
- 【转】myeclipse 上安装 Maven3
[转]myeclipse 上安装 Maven3 环境准备: JDK 1.6 Maven 3.0.4 myeclipse 8.6.1 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Ma ...
- 如何在一台机器上安装两个MYSQL数据库
1.正常安装第一个mysql(安装步骤省略) 2.在控制面板里停止第一个mysql服务 3.将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,我这里是copy ...
随机推荐
- mysqldump备份脚本一例
参考三思老师书中所写,感觉挺好用,记录下来,虽然是抄袭,但是手抄还是很累的,其中用到的其他脚本,在博客中已经记录: mysql_full_backup.sh#!/bin/sh#Created by C ...
- March 16 2017 Week 11 Thursday
Adventure may hurt you, but monotony will kill you. 也许冒险会让你受伤,但一成不变会让你灭亡. The very theme of the univ ...
- 一个SAP开发人员的2017总结
今年的生活如此丰富多彩,不写一点什么怎么对得起这过去的一年? 就当记流水账,若干年之后回来看一定很有意思. 1月 有幸成为SAP Community上2位来自China的SAP mentor之一: 3 ...
- selenium + python(鼠标操作)
关于最近学习selenium自动化测试鼠标操作的一些总结 常见的鼠标操作
- linux系统(CentOS)下安装PhantomJS
1.查看linux系统位数,来判断下载适配的PhantomJS: 输入命令:# lsb_release -a 2.下载PhantomJS: 从官网http://phantomjs.org/downlo ...
- selenium使用js进行点击
WebElement button = driver.findElement(By.xpath("/html/body/div[1]/div[3]/h2/div[2]")); Ja ...
- CodeForces - 598A Tricky Sum (数学,快速幂的运用)
传送门: http://codeforces.com/problemset/problem/598/A A. Tricky Sum time limit per test 1 second memor ...
- HDU 1220 Cube(数学,找规律)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1220 Cube Time Limit: 2000/1000 MS (Java/Others) M ...
- datagrid中设置编辑,删除列是否可以访问
foreach (RepeaterItem Item in rpt_Result.Items) { LinkButton edit = (LinkButton)Item.FindControl(&qu ...
- Python基础—01-认识python,编写第一个程序
认识python 发展历史:点此查看简介 就业方向: WEB.爬虫.运维.数据分析.机器学习.人工智能.... 版本选择 python2.7是最后一个py2的版本,2020年将不再提供支持 pytho ...