javaEE中的hibernate配置笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javaEE中的hibernate配置笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6464字,纯文字阅读大概需要10分钟。
内容图文
![javaEE中的hibernate配置笔记](/upload/InfoBanner/zyjiaocheng/1158/01f479dc57e74f1cb536e8f2c33e3c98.jpg)
0 从web.xml出发
项目中用Spring整合Hibernate,Spring贯穿整个项目,所以先看看Spring在哪一步整合了Hibernate。先看部分web.xml。
在context-param设定参数contextConfigLocation。
在listener配置基于Web上下文级别的监听器ContextLoaderListener,它会加载contextConfigLocation中的配置文件。
其中最重要的是spring-hibernate.xml,这里面配置了hibernate。
<!-- 指定spring相关文件的位置 --> < context-param > < param-name >contextConfigLocation</param-name><param-value>classpath:spring.xml,classpath:spring-ehcache.xml,classpath:spring-hibernate.xml</param-value></context-param><!-- 开启spring功能 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
1 spring-hibernate.xml
1.1 配置数据源
< bean name ="dataSource" class ="com.alibaba.druid.pool.DruidDataSource" init-method ="init" destroy-method ="close" > < property name ="url" value ="${jdbc_url}" /> < property name ="username" value ="${jdbc_username}" /> < property name ="password" value ="${jdbc_password}" /> <!-- 初始化连接大小 --> < property name ="initialSize" value ="0" /> <!-- 连接池最大使用连接数量 --> < property name ="maxActive" value ="20" /> <!-- 连接池最小空闲 --> < property name ="minIdle" value ="0" /> <!-- 获取连接最大等待时间 --> < property name ="maxWait" value ="60000" /> <!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> --> < property name ="validationQuery" value ="${validationQuery}" /> < property name ="testOnBorrow" value ="false" /> < property name ="testOnReturn" value ="false" /> < property name ="testWhileIdle" value ="true" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> < property name ="timeBetweenEvictionRunsMillis" value ="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> < property name ="minEvictableIdleTimeMillis" value ="25200000" /> <!-- 打开removeAbandoned功能 --> < property name ="removeAbandoned" value ="true" /> <!-- 1800秒,也就是30分钟 --> < property name ="removeAbandonedTimeout" value ="1800" /> <!-- 关闭abanded连接时输出错误日志 --> < property name ="logAbandoned" value ="true" /> <!-- 监控数据库 --> <!-- <property name="filters" value="mergeStat" /> --> < property name ="filters" value ="stat" /> </ bean >
1.2 配置hibernate session工厂
<!-- 配置hibernate session工厂 --> < bean id ="sessionFactory" class ="org.springframework.orm.hibernate4.LocalSessionFactoryBean" > < property name ="dataSource" ref ="dataSource" /> < property name ="hibernateProperties" > < props > < prop key ="hibernate.hbm2ddl.auto" >${hibernate.hbm2ddl.auto}</prop><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">${hibernate.show_sql}</prop><prop key="hibernate.format_sql">${hibernate.format_sql}</prop><prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop></props> </property><!-- 自动扫描注解方式配置的hibernate类文件 --><property name="packagesToScan"><list><value>light.mvc.model</value></list></property></bean>
1.3 配置事务管理(AOP)
<!-- 配置事务管理器 --> < bean name ="transactionManager" class ="org.springframework.orm.hibernate4.HibernateTransactionManager" > < property name ="sessionFactory" ref ="sessionFactory" ></ property > </ bean > <!-- 拦截器方式配置事物 --> < tx:advice id ="transactionAdvice" transaction-manager ="transactionManager" > < tx:attributes > < tx:method name ="add*" propagation ="REQUIRED" /> < tx:method name ="append*" propagation ="REQUIRED" /> < tx:method name ="save*" propagation ="REQUIRED" /> < tx:method name ="update*" propagation ="REQUIRED" /> < tx:method name ="modify*" propagation ="REQUIRED" /> < tx:method name ="edit*" propagation ="REQUIRED" /> < tx:method name ="delete*" propagation ="REQUIRED" /> < tx:method name ="remove*" propagation ="REQUIRED" /> < tx:method name ="init" propagation ="REQUIRED" /> < tx:method name ="delAndInit" propagation ="REQUIRED" /> < tx:method name ="get*" propagation ="REQUIRED" read-only ="true" /> < tx:method name ="find*" propagation ="REQUIRED" read-only ="true" /> < tx:method name ="load*" propagation ="REQUIRED" read-only ="true" /> < tx:method name ="search*" propagation ="REQUIRED" read-only ="true" /> < tx:method name ="datagrid*" propagation ="REQUIRED" read-only ="true" /> < tx:method name ="*" propagation ="REQUIRED" /> </ tx:attributes > </ tx:advice > < aop:config > < aop:pointcut id ="transactionPointcut" expression ="execution(* light.mvc.service..*Impl.*(..))" /> < aop:advisor pointcut-ref ="transactionPointcut" advice-ref ="transactionAdvice" /> </ aop:config >
2 spring-hibernate.xml
spring.xml中加载了一些数据库参数,参数在config.properties文件中进行设置,比如jdbc_url、jdbc_username、jdbc_password这些参数。
同时扫描service组件和dao组件实现自动注入。
< bean class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > < property name ="locations" > < list > < value >classpath:config.properties</value></list></property></bean><!-- 自动扫描repository和service包(自动注入) --><context:component-scan base-package="light.mvc.dao,light.mvc.service"/>
3 config.properties文件
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect driverClassName=com.mysql.jdbc.Driver validationQuery=SELECT 1 jdbc_url=jdbc:mysql://222.222.222.222:3306/xxx?useUnicode=true &characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&&autoReconnect=true jdbc_username=xxx jdbc_password=xxx hibernate.hbm2ddl.auto=none hibernate.show_sql=false hibernate.format_sql=false hibernate.use_sql_comments=false
4 如果想操作两个数据库
config.properties配置文件中,新增数据库url,username和password
spring-hibernate.xml中复制一个新的数据源<bean class=”…DataSource”>,复制的数据源需要修改bean的name,以及属性url、username和password的值
spring-hibernate.xml中复制一个新的session工厂<bean class=”…SessionFactory…”>复制的session工厂需要修改bean的id,以及属性dataSource和packagesToScan
spring-hibernate.xml中复制一个新的事务管理器,修改bean的name和sessionFactory属性
结合本项目框架,在spring-hibernate中还需配置新的tx:advice和aop:config标签
在Dao操作中使用新配置的sessionFactory进行操作,即可对新数据库进行操作
原文:http://www.cnblogs.com/liaohuiqiang/p/7440516.html
内容总结
以上是互联网集市为您收集整理的javaEE中的hibernate配置笔记全部内容,希望文章能够帮你解决javaEE中的hibernate配置笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。