jersey+spring+hibernate配置
- 格式:pdf
- 大小:947.79 KB
- 文档页数:11
Mysql Hibernate Spring 的配置<?xml version="1.0" encoding="GBK"?><!-- 指定Spring配置文件的Schema信息--><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.5.xsd /schema/tx/schema/tx/spring-tx-2.5.xsd/schema/aop/schema/aop/spring-aop-2.5.xsd"><bean id="dataSource" class="mons.dbcp.BasicDataSource" destroy-method="close"><!-- 指定连接数据库的驱动--><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 指定连接数据库的URLjdbc:mysql://10.0.0.80/metaDB?useUnicode=true&characterEncoding= GBK--><property name="url" value="jdbc:mysql://10.0.0.147/metaDB"/><!-- 指定连接数据库的用户名--><property name="username" value="root"/><!-- 指定连接数据库的密码--><property name="password" value="123456"/><property name="initialSize" value="2" /><property name="maxActive" value="50" /><property name="maxIdle" value="2" /></bean><!--<bean id="dataSource" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="org.postgresql.Driver" /><property name="url"value="jdbc:postgresql://10.0.0.253:5432/BFCATALOGDB" /><property name="username" value="mapadmin" /><property name="password" value="1234" /><property name="initialSize" value="2" /><property name="maxActive" value="50" /><property name="maxIdle" value="2" /></bean>原先使用的是oracle<bean id="dataSource" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@10.0.0.80:1521:PGISDB" /> <property name="username" value="pgisapp" /><property name="password" value="pgisapp" /><property name="initialSize" value="2" /><property name="maxActive" value="50" /><property name="maxIdle" value="2" /></bean>--><!-- 定义数据源Bean,使用C3P0数据源实现<bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbcUrl"value="jdbc:oracle:thin:@10.0.0.81:1521:PGISDB"/><property name="user" value="pgisapp"/><property name="password" value="pgisapp"/><property name="maxPoolSize" value="50"/><property name="minPoolSize" value="2"/><property name="initialPoolSize" value="2"/><property name="maxIdleTime" value="15"/></bean>--><!--<bean id="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean" ><property name="jndiName" value="xiaozhu"/></bean>--><!-- 定义Hibernate的SessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 依赖注入数据源,注入正是上面定义的dataSource --><property name="dataSource" ref="dataSource"/><!-- mappingResouces属性用来列出全部映射文件--><property name="mappingResources"><list><!-- 以下用来列出Hibernate映射文件--><value>cn/geobeans/cs/model/CsResource.hbm.xml</value><value>cn/geobeans/cs/model/MetaDataResource.hbm.xml</value></list></property><!-- 定义Hibernate的SessionFactory的属性--><property name="hibernateProperties"><props><!-- 指定数据库方言<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop><prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop><prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop><propkey="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>--><propkey="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop><!-- 是否根据需要每次自动创建数据库<prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.hbm2ddl.auto">create</prop>--><prop key="hibernate.hbm2ddl.auto">update</prop><!-- 显示Hibernate持久化操作所生成的SQL--><!-- 将SQL脚本进行格式化后再输出<prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop>--></props></property></bean><!-- 配置Hibernate的局部事务管理器,使用HibernateTransactionManager类--> <!-- 该类实现PlatformTransactionManager接口,是针对Hibernate的特定实现--> <bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <!-- 配置HibernateTransactionManager时需要依注入SessionFactory的引用--> <property name="sessionFactory" ref="sessionFactory"/></bean><!-- 配置事务切面Bean,指定事务管理器--><tx:advice id="txAdvice" transaction-manager="transactionManager"><!-- 用于配置详细的事务语义--><tx:attributes><!-- 所有以'get'开头的方法是read-only的--><tx:method name="get*" read-only="true"/><!-- 其他方法使用默认的事务设置--><tx:method name="*"/></tx:attributes></tx:advice><aop:config><!-- 配置一个切入点,匹配lee包下所有以Impl结尾的类执行的所有方法expression="execution(* org.leegang.service.impl.*Impl.*(..))"/>--><aop:pointcut id="leePointcut"expression="execution(* cn.geobeans.cs.service.impl.*Impl.*(..))"/><!-- 指定在txAdvice切入点应用txAdvice事务切面--><aop:advisor advice-ref="txAdvice"pointcut-ref="leePointcut"/></aop:config><bean id="csResourceDao"class="cn.geobeans.cs.dao.impl.CsResourceDaoHibernate"><!-- 注入持久化操作所需的SessionFactory --><property name="sessionFactory" ref="sessionFactory"/></bean><bean id="newCservice" class="cn.geobeans.cs.service.impl.CsServiceImpl"> <property name="csResourceDao" ref="csResourceDao"/><property name="viewTable" value="EZ_VIEW_LAYERS_LAYER"/><property name="sdbDriver" value="oracle.jdbc.driver.OracleDriver"/><property name="circleBoundrys" value="24"/><!--生成圆形多边形的边数--> <property name="ifManySdbAtLocal" value="NO"/><!--判断本地是否可以配置多个标准库YES/NO--></bean><bean id="cs" class="cn.geobeans.cs.service.impl.servletApi.cs"><property name="csResourceDao" ref="csResourceDao"/><property name="csService" ref="newCservice"/><property name="msService" ref="msService"/><!-- 4.29 --><property name="dbconfig" ref="dbconfig"></property><property name="bd" value="geobeans"></property><!-- YES 、NO<property name="ifPool" value="YES"></property>YES表示使用动态连接池、NO 表示不使用动态连接池--><!--<property name="bd" value="pgis"></property>--></bean><bean id="dbconfig" class="cn.geobeans.cs.util.C3P0DBConfig"><!--动态连接池C3P0的配置--><property name="maxPoolSize" value="50"/><property name="minPoolSize" value="1"/><property name="initialPoolSize" value="2"/><property name="maxIdleTime" value="15"/><!--时间单位秒--><property name="checkThreadSleepTime" value="1000"></property><!--时间单位毫秒--><property name="loginTimeout" value="5"></property><!--数据库连接超时时间,单位秒--><property name="acquireRetryAttempts" value="1"></property><!--数据库连接失败后重新连接的次数--><property name="breakAfterAcquireFailure" value="true"></property><!--失败后是否中断--></bean><!-- 下为4.29添加--><bean id="msService" class="cn.geobeans.cs.service.impl.MsServiceImpl"> <property name="metaDataResourceDao" ref="metaDataResourceDao"/></bean><bean id="metaDataResourceDao"class="cn.geobeans.cs.dao.impl.MetaDataResourceDaoHibernate"><property name="sessionFactory" ref="sessionFactory"/></bean><bean id="AjaxServer"class="cn.geobeans.cs.service.impl.servletApi.AjaxServer"></bean></beans>Mysql JDBC 连接简单程序String sDBDriver = "com.mysql.jdbc.Driver";Stringurl="jdbc:mysql://localhost:3306/lottery?user=root&password=123456"; Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName(sDBDriver);conn = DriverManager.getConnection(url);stmt = conn.createStatement();System.out.println("连接成功");int count = stmt.executeUpdate("insert into user values(2,'peter')"); System.out.println("成功插入了"+count+"条记录");rs = stmt.executeQuery("select * from user");while(rs.next()){String sid = rs.getString(2);System.out.println(sid+"");}rs.close();stmt.close();}catch(Exception e){e.printStackTrace();System.out.println("error");}finally{if(null!=conn){conn.close();}}}。
Hibernate基本使⽤及配置Hibernate基本使⽤及配置Hibernate是什么框架Hibernate是⼀个开放源代码的对象关系映射框架1.它对JDBC进⾏了⾮常轻量级的对象封装2.它将POJO与数据库表建⽴映射关系,是⼀个全⾃动的orm框架3.Hibernate可以⾃动⽣成SQL语句,⾃动执⾏,使得Java程序员可以随⼼所欲的使⽤对象编程思维来操纵数据库。
4.Hibernate可以应⽤在任何使⽤JDBC的场合,既可以在Java的客户端程序使⽤,也可以在Servlet/JSP的Web应⽤中使⽤5.它是持久层的ORM框架POJO是什么简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称EJB是什么是Sun的JavaEE服务器端组件模型,设计⽬标与核⼼应⽤是部署分布式应⽤程序。
简单来说就是把已经编写好的程序(即:类)打包放在服务器上执⾏。
ORM是什么Object Relational Mapping(对象关系映射),指的是将⼀个Java中的对象与关系型数据库中的表建⽴⼀种映射关系,从⽽操作对象就可以操作数据库中的表。
使⽤Hibernate有什么好处1.对JDBC访问数据库的代码进⾏了轻量级封装,简化了数据访问层繁琐重复性的代码,减少了内存消耗,加快了运⾏效率2.是⼀个基本JDBC的主流持久化框架,很⼤程度上简化了DAO层的编码⼯作3.性能⾮常好,映射灵活性⽐较好,⽀持多关系数据库,⼀对⼀,⼀对多,多对多的各种复杂关系4.可扩展性强,源代码及API开放,当本⾝功能不够⽤时,可以⾃⾏编码进⾏扩展框架下载地址/doc/81822fa9366baf1ffc4ffe4733687e21af45ffb1.html /orm/Hibernate⽬录解析documentation Hibernate开发的⽂档project Hibernate提供的参考项⽬lib Hibernate开发的⽂档required Hibernate开发的必须的依赖包optional Hibernate开发的可选的jar包Hibernate使⽤1.创建⼀个项⽬(普通Java项⽬、Web项⽬都可以)2.引⼊必须的jar包①数据库的驱动包②Hibernate开发必须的Jar包3.建表5.创建Hibernate的核⼼配置⽂件,通常都叫hibernate.cfg.xml①创建完毕后,也有⼀个约束要引⼊,在org.hibernate包当中可以找到对应的dtd configuration.dtd数据库相关配置(如果属性名记不住):在⽬录提供的project当中有⼀个etc,在etc当中有⼀个hibernate.properties 的⽂件打开。
Spring配置⽂件集成Hibernate配置⽂件Spring对hibernate配置⽂件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置。
spring对hibernate配置⽂件hibernate.cfg.xml的集成相当好,可以在Spring中配置Hibernate的SessionFactory从⽽取代Hibernate.cfg.xml和HibernateSessionFactory.javaSpring在集成Hibernate时⼜分为两种形式:1、继续使⽤Hibernate的映射⽂件*.hbm.xml2、使⽤jpa注解形式的pojo对象,⽽去掉*.hbm.xml的Hibernate映射⽂件⾸先要引⼊jar包⼀.继续使⽤Hibernate的映射⽂件*.hbm.xml<!-- 定义dbcp数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!-- 指定jdbc驱动 --><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><!-- 连接数据库的url地址 --><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><!-- 连接数据的⽤户名和密码 --><property name="username" value="hyj"></property><property name="password" value="123"></property></bean><!-- 定义sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 为LocalSessionFactoryBean注⼊定义好的数据源 --><property name="dataSource"><ref bean="dataSource"/></property><!--添加hibernate配置参数 --><property name="hibernateProperties"><props><!-- 每个数据库都有其对应的Dialect以匹配其平台特性 --><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><!-- 是否将运⾏期⽣成的sql输出到⽇志以供调试 --><prop key="hibernate.show_sql">true</prop><!-- 是否格式化sql --><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 添加对象关系映射 --><property name="mappingResources"><list><value>classpath:cn/entity/User.hbm.xml</value></list></property></bean>⼆.使⽤jpa注解形式的pojo对象,⽽去掉*.hbm.xml的Hibernate映射⽂件这⾥需要注意的就是1.spring中配置SessionFactory bean时它对应的class应为org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean2.AnnotationSessionFactoryBean中查找jpa注解形式的pojo映射对象的属性有:annotatedClasses、packagesToScan① annotatedClasses:指定classpath下指定的注解映射实体类的类名② packagesToScan指定映射⽂件的包名<!-- 定义dbcp数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!-- 指定jdbc驱动 --><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><!-- 连接数据库的url地址 --><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><!-- 连接数据的⽤户名和密码 --><property name="username" value="hyj"></property><property name="password" value="123"></property></bean><!-- 定义sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!-- 为LocalSessionFactoryBean注⼊定义好的数据源 --><property name="dataSource"><ref bean="dataSource"/></property><!--添加hibernate配置参数 --><property name="hibernateProperties"><props><!-- 每个数据库都有其对应的Dialect以匹配其平台特性 --><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><!-- 是否将运⾏期⽣成的sql输出到⽇志以供调试 --><prop key="hibernate.show_sql">true</prop><!-- 是否格式化sql --><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 添加对象关系映射 --><property name="packagesToScan"><list><value>cn.entity.*</value></list></property></bean>。
eclipse搭建hibernate(T134) ⼀、环境介绍a)开发工具:eclipse javaEE3.6b)hibernate版本:3.5c)数据库:mssql2005d)操作系统:windows xp/ubuntu⼆、创建JAVA⼯程a)新建一个名为myHibernate的java工程,如图:b)导入hibernate所需的jar文件,如图:c)在src目录下面新建一个hibernate.cfg.xml文件,并加入如下代码:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"> <hibernate-configuration></hibernate-configuration>d)配置hibernateJDBC连接,在hibernate.cfg.xml文件加入如下代码:<!-- 数据库连接设置 --><!-- start --><!-- 驱动 --><property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <!-- url --><property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=student</property> <!-- 用户名 --><property name="ername">sa</property><!-- 密码 --><property name="connection.password"></property><!-- end --><!-- 连接池容量上限数目 --><property name="connection.pool_size">1</property><!-- sql方言 --><property name="dialect">org.hibernate.dialect.HSQLDialect</property> <!-- 是否在控制台显示执行sql语句 --><property name="show_sql">true</property><!-- 上下文相关的会话 --><property name="current_session_context_class">thread</property>e)测试连接,编写Test类,在main方法中加入以下代码进行测试://加载核心配置文件Configuration cfg = new Configuration().configure();//得到session工厂(XML文件配置)SessionFactory factory = cfg.buildSessionFactory();//得到sessionSession session = factory.getCurrentSession();//Session session = factory.openSession();//打印session对象System.out.println("session==========="+session);如果你能正常打印出当前对象,那我会为你表示祝贺,你的hibernate框架配置已经完成了初步阶段。
为什么要用Spring来管理Hibernate呢?我们可以参考以下步骤。
首先我们来看一下Hibernate进行操作的步骤。
比如添加用户的一个步骤。
在此为了解释提出的问题,只做一个截图,若想看完整代码示例,可以参考《八步详解Hibernate的搭建及使用》看截图,可以看出,Hibernate操作的步骤如下:1.获得Configuration对象2.创建SessionFactory3.创建Session4.打开事务5.进行持久化操作。
比如上面的添加用户操作6.提交事务7.发生异常,回滚事务8.关闭事务使用Hibernate进行访问持久层,每次都要进行这八个步骤。
但是若使用Spring对Hibernate进行管理,又是怎么样的呢?首先,Spring对Hibernate提供了HibernateTemple类。
这个模版类对session进行封装。
并且Spring会默认为自动提交事务。
所在在dao层直接写入this.save(Object)即可。
在实践中,遇到了一个问题,无法插入数据库,经过一番折腾,多次实验,验证,总结一下原因,结果如下:注意:所有的操作都必须在事务中进行。
若单纯的使用Hibernate,则事务需要手动开启提交关闭操作。
当然也可以在Hibernate配置文件中,自动提交。
若使用Spring管理Hibernate,则默认的是自动提交事务。
但是在此,需要注意的是:若使用Spring在配置文件中配置数据源而不使用hibernate.cfg.xml,则可以成功插入数据库,因为HibernateTemple默认提供自动提交事务。
在Spring的配置文件配置数据源如下:使用此数据源需要的jar如下:commons-dbcp.jar,commons-pool.jar,msbase.jar,mssqlserver.jar,msutil.jar,s qljdbc4.jar;org.hibernate.dialect.SQLServerDialectupdate!-- 如果采用传统的hbm.xml的方式,可以采用如下方式来简化注册hbm.xml的步骤,并且class为LocalSessionFactoryBean-->classpath:User.hbm.xml若Spring中不是直接配置数据源,而是使用hibernate.cfg.xml,则是无法若直接this.save(Object),则无法插入数据库中,但是可以保存中缓存中。
前言:这个例子的view层用到了struts,DAO层用到了hibernate,由于逻辑及其简单(只是往数据库添加一条记录),所以暂时没有用到spring。
一、使用eclipse+struts+spring+hibernate+myeclipse+mysql开发配置过程。
1.jdk的安装:安装文件:jdk-1_5_0_15-windows-i586-p.exe说明:最好用jdk1.5,可以去sun主页下载,我这里已经下了,可以提供。
注意:最好在新装系统下安装,并且此前没有装过java相关的软件,以免出现版本或者path问题。
过程:可以直接安装到c盘根目录下即可,注意要记住安装路径,以后可能会用到。
2.web应用服务器tomcat的安装:安装文件:apache-tomcat-5.5.26.exe说明:要想构建jsp应用,web应用服务器是必须要有的,asp服务器为IIS,php服务器为Apache,jsp服务器比较多有weblogic和websphere(两者是商业级的,比较强大,但要收费),tomcat和resin(免费的,比较适用中小级应用,如果是大型应用则须考虑集群)。
在这里,我选用tomcat,因为它使用较广泛,网上相关的资料也比较多。
我并没有选择最新版本,原因是次新版本往往比最新版本更加稳定。
注意:必须先装jdk,否则不能安装tomcat(原因之一是tomcat在对jsp进行编译时用到了jdk,并且jdk是tomcat正常工作的前提)。
过程:可以直接安装到c盘默认路径,选择前面安装的jdk路径,并且修改端口8080为80(tomcat默认端口为8080,而一般我们通过IE访问时端口为80,需要注意的是要保证没有其他程序已经占用80端口(比如你已经装了iis或者apache),否则tomcat不能正常启动),控制台页面的管理员admin帐号暂时不设置密码。
测试页面http://127.0.0.1,检测是否安装成功,如果进入欢迎页面就表示tomcat安装成功。
Spring+Hibernate整合Spring是一个轻量级的bean容器,它为业务对象(business objects)、DAO对象和资源对象(如:JDBC数据源或者Hibernate SessionFactorie等)提供了IoC类型的装配能力。
Spring 通过使用一个xml格式的配置文件,为开发者提供了一种通过定制属性文件来手动管理单例对象或工厂对象的可选择性。
由于Spring将非侵入性做为一个重要的目标,因此由Spring 配置管理的bean均不需要依赖Spring自身的接口和类,就可以通过它们的bean属性完成配置。
从而可以被应用到任何环境中,无论你开发的是一个J2EE的web应用还是一个桌面应用甚至只是一个applet都可以。
在使用Hibernate的应用中,Spring对DAO对象通常的事务管理机制应该特别引起关注。
它的目的就是分离数据访问和事务处理,使事务性业务对象不与任何特殊的数据访问或事务策略耦合在一起,从而不影响业务对象的可复用性。
这种划分既可以经由事务模板(TransactionTemplate)用在java代码中编程的方式实现,也可以经由AOP的事务拦截器(一般用TransactionProxyFactoryBean)用在配置文件中声明的方式实现。
无论是本地的Hibernate / JDBC事务,还是JTA事务都支持对象外的事务策略,这对于本地的无状态会话Bean是一个非常有用的选择。
Spring的HibernateTemplate类提供了一个简单的方式实现了Hibernate-based DAO对象,而不必关心如何获得Hibernate的Session实例,也不必关心多方参与的事务处理。
无需使用try-catch块,也无需进行事务检查。
一个简单的Hibernate访问方法就完全解决了这些麻烦! 无论是在多个DAO接口还是在多方事务的情况下,Spring使得多种DAO对象无缝地协同工作。
spring+hibernate两种整合⽅式配置⽂件的⽅法之前的⽂章都是讲解springmvc+spring+mybatis 的整合,⽽很少有springmvc+spring+hibernate 因为⼯作的需要,最近在使⽤hibernate 所以下⾯我们来看看 spring整合hibernate的配置⽂件,这⾥只说spring+hibernate 的配置⽂件⽽不说springmvc 因为这些是不⽤变的。
spring整合hibernate 有两种⽅式 1、注解⽅式 2、xml⽅式实现1、注解⽅式实现:applicationContext.xml配置⽂件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/tx/schema/tx/spring-tx.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/context/schema/context/spring-context.xsd"><context:component-scan base-package="com.test" /><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:jdbc.properties</value></list></property></bean><bean id="c3p0DataSource" destroy-method="close"class="boPooledDataSource"><property name="driverClass" value="${driverClass}" /><property name="jdbcUrl" value="${url}" /><property name="user" value="${user}" /><property name="password" value="${password}" /><property name="initialPoolSize" value="${initialPoolSize}" /><property name="minPoolSize" value="${minPoolSize}" /><property name="maxPoolSize" value="${maxPoolSize}" /><property name="maxIdleTime" value="${maxIdleTime}" /></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="c3p0DataSource" /><property name="packagesToScan"><list><value>com.test.bean</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${dialect}</prop><prop key="hibernate.show_sql">${show_sql}</prop><prop key="hibernate.format_sql">${format_sql}</prop><prop key="e_sql_commants">${use_sql_comments}</prop><prop key="hibernate.hbm2ddl.auto">${hbm2ddl.auto}</prop></props></property></bean><bean id="txManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="get*" read-only="true" /><tx:method name="*" /></tx:attributes></tx:advice><aop:config><aop:pointcut id="bizMethods" expression="execution(* .*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" /></aop:config></beans>2.xml⽅式实现applicationContext.xml配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/tx/schema/tx/spring-tx.xsd/schema/aop/schema/aop/spring-aop.xsd"><!-- 让spring 去读取指定路径下的资源⽂件 --><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations" value="classpath:jdbc.properties"/></bean><!-- 配置c3p0连接池 --><bean id="c3p0Source" class="boPooledDataSource" destroy-method="close"> <property name="driverClass" value="${driverClass}" /><property name="jdbcUrl" value="${url}" /><property name="user" value="${user}" /><property name="password" value="${password}" /><property name="initialPoolSize" value="${initialPoolSize}" /><property name="minPoolSize" value="${minPoolSize}" /><property name="maxPoolSize" value="${maxPoolSize}" /><property name="maxIdleTime" value="${maxIdleTime}" /></bean><!-- 配置SessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="c3p0Source" /><property name="mappingResources"><list><value>/com/cdzg/spring/bean/User.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${dialect}</prop><prop key="hibernate.hbm2ddl.auto">${hbm2ddl.auto}</prop><prop key="hibernate.show_sql">${show_sql}</prop><prop key="hibernate.format_sql">${format_sql}</prop><prop key="e_sql_comments">${use_sql_comments}</prop></props></property></bean><!-- 配置事务管理器 --><bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 定义事务通知 --><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="get*" read-only="true"/><tx:method name="*"/></tx:attributes></tx:advice><!-- 定义事务切⾯,并应⽤事务通知 --><aop:config><aop:pointcut id="xxxBizImpl" expression="execution(* .*.*(..))"/><aop:advisor pointcut-ref="xxxBizImpl" advice-ref="txAdvice"/></aop:config><bean id="userDaoImpl" class="erDaoImpl"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="userBizImpl" class="erBizImpl"><property name="userDao" ref="userDaoImpl" /></bean><bean id="userAction" class="erAction"><property name="userBiz" ref="userBizImpl" /></bean></beans>两种配置最⼤的区别就是注解⽅式不⽤在写O/R映射配置⽂件⽽xml⽅式实现的要配置O/R映射配置⽂件注解的这种⽅式,直接扫描bean包就可以,剩下的对应关系由框架完成⽽xml配置⽅式要配置O/R 映射⽂件并在这⾥指定⽂件,如果多的话可以使⽤通配符 "*"以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
【Hibernate】Hibernate框架配置详解通过Hibernate我们可以⽅便地操作数据库读取出来的信息,减少了繁琐的JDBC操作。
⼀般情况下,有两种⽅式可以进⾏Hibernate的配置,⼀种是通过配置⽂件进⾏配置,另⼀种是通过注解进⾏配置。
我将通过注解简单介绍Hibernate框架的配置。
Hibernate框架的配置⼀般可以分为以下⼏个步骤:1.添加基本的Hibernate Jar包2.添加注解的Jar包3.编写Hibernate.cfg.xml⽂件4.编写POJO⽂件,并编写注释5.编写测试⽂件,导出到数据库进⾏测试。
⼀、导⼊基本的Hibernate Jar包⼆、导⼊Hibernate Annotation 的Jar包三、编写Hibernate.cfg.xml⽂件1<?xml version='1.0' encoding='UTF-8'?>2<!DOCTYPE hibernate-configuration PUBLIC3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"4 "/hibernate-configuration-3.0.dtd">56<!-- Generated by MyEclipse Hibernate Tools. -->7<hibernate-configuration>89<session-factory>10<!-- 配置JDBC连接属性 -->11<property name="myeclipse.connection.profile">12 com.mysql.jdbc.Driver13</property>14<property name="connection.url">15 jdbc:mysql://localhost:3306/basehibernate16</property>17<property name="ername">root</property>18<property name="connection.password">sa</property>19<property name="connection.driver_class">20 com.mysql.jdbc.Driver21</property>22<property name="dialect">23 org.hibernate.dialect.MySQLDialect24</property>2526<!-- ⾃动建表 -->27<property name="hbm2ddl.auto">auto</property>28<property name="connection.autocommit">true</property>29<mapping class="com.basehibernate.pojo.Department"/>30<mapping class="com.basehibernate.pojo.Employee"/>31<mapping class="com.basehibernate.pojo.Meal"/>32<mapping class="com.basehibernate.pojo.OrderMeal"/>33<mapping class="com.basehibernate.pojo.GradeMeal"/>34<mapping class="com.basehibernate.pojo.RewardMeal"/>3536</session-factory>3738</hibernate-configuration>不同数据库连接在Hibernate.cfg.xml中的配置不同,这⾥以MySQL为例。
hibernate的sessionFactory配置:<!-- hibernate sessionFactory配置 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="mappingResources"><list><value>xxx.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">${hibernate.show_sql}</prop><prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop> <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop> <propkey="hibernate.connection.characterEncoding">${hibernate.connection.characterE ncoding}</prop><propkey="hibernate.connection.autocommit">${hibernate.connection.autocommit}</pr op><propkey="hibernate.connection.release_mode">${hibernate.connection.release_mode}</ prop><prop key="hibernate.autoReconnect">${hibernate.autoReconnect}</prop> <propkey="e_reflection_optimizer">${e_reflection_opt imizer}</prop></props></property></bean>定义事务管理器及事务拦截器:<!-- 定义事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置事务拦截器 --><bean id="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --><property name="transactionManager" ref="transactionManager" /><property name="transactionAttributes"><!-- 下面定义事务传播属性 --><props><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="create*">PROPAGATION_REQUIRED</prop><prop key="createDomain">PROPAGATION_REQUIRES_NEW</prop> <prop key="update*">PROPAGATION_REQUIRED</prop><prop key="Update*">PROPAGATION_REQUIRED</prop><prop key="modify*">PROPAGATION_REQUIRED</prop><prop key="cancel*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="search*">PROPAGATION_REQUIRED,readOnly</prop><prop key="Create*">PROPAGATION_REQUIRED</prop><prop key="sub*">PROPAGATION_REQUIRED</prop><prop key="finance*">PROPAGATION_REQUIRED</prop><prop key="start*">PROPAGATION_REQUIRED</prop><prop key="stop*">PROPAGATION_REQUIRED</prop><prop key="delete*">PROPAGATION_REQUIRED</prop><prop key="transfer">PROPAGATION_REQUIRED</prop><prop key="subCash*">PROPAGATION_REQUIRED</prop><prop key="send*">PROPAGATION_REQUIRED</prop><prop key="xPF*">PROPAGATION_REQUIRED</prop><prop key="pay*">PROPAGATION_REQUIRED</prop><prop key="deal*">PROPAGATION_REQUIRED</prop><prop key="transfer*">PROPAGATION_REQUIRED</prop><prop key="defaultPhone">PROPAGATION_REQUIRED</prop><prop key="open*">PROPAGATION_REQUIRED</prop><prop key="close*">PROPAGATION_REQUIRED</prop><prop key="viewUploadFile">PROPAGATION_REQUIRED</prop><prop key="page*">PROPAGATION_REQUIRED</prop></props></property></bean>定义需要处理的bean即dao:<!--定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性这个bean后处理器,根据事务拦截器为目标bean自动创建事务代理指定对满足哪些bean name的bean自动生成业务代理--><beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreato r"><!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器 --><property name="interceptorNames"><list><value>transactionInterceptor</value></list></property><!-- 下面是所有需要自动创建事务代理的bean --><property name="beanNames"><list><value></value></list></property></bean>。
spring配置详解1.前⾔公司⽼项⽬的后台,均是基于spring框架搭建,其中还⽤到了log4j.jar等开源架包。
在新项⽬中,则是spring和hibernate框架均有使⽤,利⽤了hibernate框架,来实现持久化,简化sql操作等。
Hibernate配置⽂件可以有两种格式,⼀种是 hibernate.properties,另⼀种是hibernate.cfg.xml。
后者稍微⽅便⼀些,当增加hbm映射⽂件的时候,可以直接在 hibernate.cfg.xml ⾥⾯增加,不必像 hibernate.properties 必须在初始化代码中加⼊。
我们新项⽬中使⽤的是hibernate.cfg.xml格式。
不过在本⽂中不将细述,后续有机会再补上。
公司项⽬中,中间件主要有tomcat,webshpere,WebLogic。
以下,将对项⽬中spring基本配置,log4j的配置,还有中间件的相关参数配置做⼀个初步的介绍。
2.spring配置——以⽼GIS项⽬为例⼦GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz⽅⾯的配置。
配置的实现是通过注记配置和XML配置来合作实现。
这⾥,我将按照Spring的配置流程,将其他⼏个⽅⾯的配置融合其中,来进⾏全⾯解析。
2.1SpringMVC的配置2.1.1.web.xml的配置Web程序中,当中间件启动时,中间件会⾸先读取web.xml中的配置。
在web.xml中可以配置监听器,过滤器,servlet映射等等。
在Spring 框架中,我们主要需配置容器初始化时读取的spring容器配置⽂件的路径以及springMVC中的分发器DispatcherServlet。
在GISV13的web.xml中,我们定义了如下内容:InitGISConfigServlet定义了容器启动时,⾸先要运⾏这个⽅法。
然后servletname为MVC的这部分便是定义了springMVC的分发器以及此servlet所对应的加载配置⽂件的路径。
Hibernate 配置详解(一)Hibernate的基本配置文件有两种:hibernate.cfg.xml和*.hbm.xml文件。
前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;后者包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping 节点被加载到Configuration和SessionFactory实例。
这两种文件信息包含了Hibernate的所有运行期参数。
下面我们用详细的例子来说明这两种文件的基本结构和内容。
一、hibernate.cfg.xml文件:<!--该文件的开头信息,对Hibernate而言,该类文件基本都这么开头:--> <?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- 正文开始--><hibernate-configuration><!--下面是数据库的基本连接信息,对一个应用来说,设置一个session-factory节点就够了,除非我们中间使用了多个数据库--> <session-factory><!--数据库驱动信息--><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><!--url信息--><propertyname="connection.url">jdbc:mysql://localhost:3306/webases</property><!--用户名--><property name="ername">root</property><!--密码--><property name="connection.password">274507</property><!--数据库方言信息--><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!--指定Hibernate映射文件路径--><mapping resource="com/Hibernate/test_products.hbm.xml" /></session-factory></hibernate-configuration>。
Servlet, Spring, hibernate基本配置本文主要描述个人对于servlet,spring,及hibernate初始化过程的理解。
1,一切皆因web.xml而起。
web.xml,也叫deployment descriptor。
从这个名字就知道它包含了web程序运行的所有信息。
当servlet容器初始化的时候就会读取该文件的内容,来决定如何初始化程序上下文,如何定义servlet的参数,如何定义Request Dispatch,如何挂载filter,如何运行Listener等信息。
来看一个简单的web.xml的例子:web.xml1<?xml version="1.0" encoding="UTF-8"?>2<web-app xmlns="/xml/ns/javaee"; xmlns:xsi="http://www.w3.o rg/2001/XMLSchema-instance";3 xsi:schemaLocation="/xml/ns/javaee4 /xml/ns/javaee/web-app_3_0.xsd";5 version="3.0">6<display-name>chronicles</display-name>78<context-param>9<param-name>key</param-name>10<param-value>value</param-value>11</context-param>1213<listener>14<listener-class>org.springframework.web.context.ContextLoaderListener 15</listener-class>16</listener>1718<filter>19<filter-name>LoggingFilter</filter-name>20<filter-class>org.springframework.web.filter.Log4jNestedDiagnosticConte xtFilter</filter-class>21</filter>2223<filter-mapping>24<filter-name>LoggingFilter</filter-name>25<url-pattern>/*</url-pattern>26</filter-mapping>2728<servlet>29<servlet-name>chronicles</servlet-name>30<servlet-class>org.springframework.web.servlet.DispatcherServlet31</servlet-class>32<load-on-startup>1</load-on-startup>33</servlet>3435<servlet-mapping>36<servlet-name>chronicles</servlet-name>37<url-pattern>/</url-pattern>38</servlet-mapping>3940<welcome-file-list>41<welcome-file>index.jsp</welcome-file>42</welcome-file-list>43</web-app>44该例子包含了常用的一些标签。