springx+hibernatex配置详解_第1页
springx+hibernatex配置详解_第2页
springx+hibernatex配置详解_第3页
springx+hibernatex配置详解_第4页
springx+hibernatex配置详解_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、spring4.x + hibernate4.x 配置详侣车关于spring和hibernate 的使用以及特征等等,在此不再啰嗦,相信大家也都知道,或者去搜 索一下即可。本篇博文的内容主要是我最近整理的关于spring4.x 和hibernate 4.x相关配置和使用方式,当然spring3.x 以及hibernate4.x也可以借鉴。首先是配置文件 web.xml增加以下代码即可<!-加载spring相关的配置文件-><context-param><param-name>contextConfigLocation</param-name>&l

2、t;param-value>classpath*:/applicationContext.xml</param-value></context-param><!-启用 spring 监听-><listener><listener-class>org.springframework.web.context.ContextLoaderListene</listener-class></listener>然后建立applicationContext.xml 文件,src下。 文件内容如下,注释我尽量写的很详细电

3、<beans xmlns:xsi="/2001/XMLSchema-instance”xmlns="/schema/beans" xmlns:aop="/schema/aop"xmlns:context="/schema/context" xmlns:tx="ht tp:/www.springframewo

4、/schema/tx"xmlns:cache="/schema/cache" xmlns:p="http:/ /schema/p"xsi:schemaLocation="/schema/beanshttp:/www.springframework.Org/schema/beans/spring-beans-4.0.xsdhttp:/www.springframew

5、/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsdhttp:/www.spring

6、/schema/cache http:/www.springframewor /schema/cache/spring-cache-4.0.xsd"><!-引入 properties文件-><context:property-placeholder location ="classpath*:/appCperties" /><!-定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到

7、数据池中,方便下次使用调用-><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSourc e"destroy-method="close"><!-设置JDBC驱动名称-><property name="driverClass" value="$(jdbc.driver" /><!-设置 JDBC 连接 URL -><property name="j

8、dbcUrl" value="$(jdbc.url" /><!-设置数据库用户名-><property name="user" value="$(jdbc.username" /><!-设置数据库密码-><property name="password" value="$(jdbc.password" /><!-设置连接池初始值-><property name="initialPoolSize"

9、 value="5" /></bean><!-配置 sessionFactory -><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-数据源-><property name="dataSource" ref="dataSource" /><!- hibernate的相关届性配置 -&g

10、t;<property name="hibernateProperties"><value><!-设置数据库方言->hibernate.dialect=org.hibernate.dialect.MySQLDialect<!-设置自动创建|更新|验证数据库表结构->hibernate.hbm2ddl.auto=update<!-是否在控制台显示sql ->hibernate.show_sql=true<!-是否格式化sql,优化显示->hibernate.format_sql=true<!-是否开

11、启级缓存->hibernate.cache.use_second_level_cache=false<!-是否开启查询缓存->hibernate.cache.use_query_cache=false<!-数据库批量查询最大数->hibernate.jdbc.fetch_size=50<!-数据库批量更新、添加、删除操作最大数->hibernate.jdbc.batch_size=50<!-是否自动提交事务->hibernate.connection.autocommit=true<!-指定hibernate在何时释放JDBC连接-&

12、gt;hibernate.connection.release_mode=auto<!-仓U建 session方式 hibernate4.x 的方式->hibernate.current_session_context_class=org.springframework.or m.hibernate4.SpringSessionContext<!- javax.persistence.validation.mode®认情况下是 aut。的, 就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation*包所以把它设置为none即可-

13、>javax.persistence.validation.mode=none</value></property><!-自动扫描实体对象 tdxy.bean的包结构中存放实体类 -><property name="packagesToScan"value="tdxy.bean" /></bean><!-定义事务管理-><bean id="transactionManager”class="org.springframework.orm.hiberna

14、te4.HibernateTransactionManager "><property name="sessionFactory" ref="sessionFactory" /> </bean><!-定义 Autowired 自动注入 bean -><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotati onBeanPostProcessor"/><!-扫描有注解的文件b

15、ase-package包路径-><context:component-scan base-packag="tdxy”/><tx:advice id="txAdvice" transaction-manage="transactionManager"> <tx:attributes><!-事务执行方式REQUIRED:指定当前方法必需在事务环境中运行, 如果当前有事务环境就加入当前正在执行的事务环境, 如果当前没有事务,就新建一个事务。这是默认值。-><tx:method name=&q

16、uot;create*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method na

17、me="remove*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="import*" propagation="REQUIRED" /><!-指定当前方法以非事务方式执行操作,如果当前存在事务,就 把当前事务挂起,等我以非事务的状态运行完,再继续原来的事务。查询定义即可read-only="tr

18、ue"表示只读-><tx:method name="*" propagation="NOT_SUPPORTED" read-only="true" /></tx:attributes></tx:advice><!-定义切面,在 * tdxy.*.service.*ServiceImpl.*(.)中执行有关的 hibernat e session的事务操作 -><aop:config><aop:pointcut id ="serviceOpera

19、tion" expression="execution(* tdxy.*.service.*Service.*(.)" /><aop:advisor advice-re仁"txAdvice" pointcut-ref="serviceOperation" /></aop:config></beans>applicationContext.xml文件弓I用了一个properties 文件 ,该文件也在 src 下,appCperties内容可以自己定义#敬据库连接信息

20、 #1 jdbc.username = root2 jdbc.password = admin3 jdbc.url =4 jdbc:mysql:/localhost:3306/tdxy?useUnicode=true&characterEncoding=5 UTF-8jdbc.driver = com.mysql.jdbc.Driver自己写了一个 test用的basedaopackage tdxy.dao;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;imp

21、ort org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;/* Title: BaseDao.java* Package tdxy.dao* Description: TODO(baseDao 数据库操作实现类)* author dapeng* date 2014 年 5 月 7 日 下午 5:09:22* version V1.0*/Repositorypublic class BaseDao /* Autowired 自动装配 相当丁

22、 get() set()*/Autowiredprotected SessionFactory sessionFactory;/* gerCurrentSession会自动关闭session使用的是当前的session事务* return*/public Session getSession() /*return sessionFactory.getCurrentSession();openSession需要手动关闭session意思是打开一个新的 sessionreturn*/public Session getNewSession() return sessionFactory.openS

23、ession();public void flush() (getSession().flush();public void clear() (getSession().clear();/*根据id查询信息* param id* return*/SuppressWarnings("rawtypes")public Object load(Class c, String id) (Session session = getSession();return session.get(c, id);/*获取所有信息* param c* return*/SuppressWarning

24、s( "rawtypes" )public List getAllList(Class c) String hql = "from " + c.getName();Session session = getSession();return session.createQuery(hql).list();/*获取总数量* param c* return*/SuppressWarnings("rawtypes")public Long getTotalCount(Class c) Session session = getNewSessi

25、on();String hql = "select count(*) from " + c.getName();Long count = (Long) session.createQuery(hql).uniqueResult(); session.close();return count != null ? count.longValue() : 0;/*保存* param bean*/public void save(Object bean) try Session session = getNewSession();session.save(bean);session

26、.flush();session.clear();session.close(); catch (Exception e) e.printStackTrace();/*更新* param bean*/public void update(Object bean) Session session = getNewSession();session.update(bean);session.flush();session.clear();session.close();/*删除* param bean*/public void delete(Object bean) Session session

27、 = getNewSession();session.delete(bean);session.flush();session.clear();session.close();/*根据ID删除* param c 类* param id ID*/SuppressWarnings( "rawtypes" )public void delete(Class c, String id) Session session = getNewSession();Object obj = session.get(c, id);session.delete(obj);flush();clear

28、();/*批量删除* param c 类* param ids ID 集合*/SuppressWarnings( "rawtypes" ) public void delete(Class c, String ids) for (String id : ids) Object obj = getSession().get(c,id); if (obj != null) getSession().delete(obj);不知大家有没有注意applicationContext.xml这样一句代码<!-设置自动创建|更新|验证数据库表结构->hibernate.hbm

29、2ddl.auto=update这个意思是 只要在实体bean指定了 entity ,那么在数据库会自动创建对应的表和表结构test用的一个实体 beanpackage tdxy.bean;import java.io.Serializable;import javax.persistence.Entity;import javax.persistence.Id;/* * ClassName: UserInfoBean* Description: TODO(用户信息类)* author dapeng* date 2014 年 5 月 7 日 上午 12:13:44* version V1.0

30、*/Entitypublic class UserInfoBean implements Serializable private static final long serialVersionUID = 7280747949998651159L;id;nickName;pwd;Idprivate String/*昵称*/private Stringprivate String/*等级*/private String level;/*经验值*/private String emValue;/*性别(0男1女)*/private String sex;private String birthda

31、y;private String qq;private String email;/*头像*/private String img;/*所在地*/private String address;/*签名*/private String qmd;public String getId() return id;public void setId(String id) this.id = id;public String getNickName() return nickName;public void setNickName(String nickName) this.nickName = nick

32、Name;public String getPwd() ( return pwd;public void setPwd(String pwd) ( this.pwd = pwd;public String getLevel() ( return level;public void setLevel(String level) ( this.level = level;public String getEmValue() ( return emValue;public void setEmValue(String emValue) ( this.emValue = emValue;public String getSex() ( return sex;public void setSex(String sex) ( this.sex = sex;public String getBirthday() ( return birthday;public void setBirthday(String birthday) ( this.birthday = birthday;p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论