• 关于

    hibernate关闭数据库连接

    的搜索结果

问题

hibernate调用存储过程,connect需要关闭吗?

最近采用ssh框架开发,有一个需要调用存储过程的,我采用的是以下这种方法CallableStatement calls =positionSaveDaoImpl.getHibernatetemplate().getSessionFactor...
小旋风柴进 2019-12-01 20:22:37 1230 浏览量 回答数 1

回答

Session 也就是 Hibernate中一个事务操作的缓存对象,Spring封装Hibernate也就是封装对Session的操作,简化对session的操作。 SessionFactory 是Spring专门为Hibernate定制的Session工厂类, 如果我们不用Spring,直接使用Hibernate,我们则需要写一个配置文件 hibernate.cfg.xml 文件,但是既然用了spring,那么直接配置在spring bean容器中了,其中配置,数据库连接,hql的指定数据库翻译器(Dialect),java对象和数据库表的映射文件加载 等。 hibernate3 一般用的是 org.springframework.orm.hibernate3.LocalSessionFactoryBean 这个类。 HibernateTemplate 是Hibernate操作进行封装,我们只要简单的条用HibernateTemplate 对象,传入hql和参数,就获得查询接口, 至于事务的开启,关闭,都交给HibernateTemplate 对象来处理。 HibernateTemplate 如果要看它的优越性,应该要结合spring的配置式事务。 spring + hibernate 使用spring配置式事务, 你会发觉你的代码会节省很多,而程序的管理,修改 和 扩展方面, 增强了好多。 自己实际写一个代码跑一下,这样才能有体会。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!
牧明 2019-12-02 02:16:49 0 浏览量 回答数 0

回答

这确实是一个难以克服的难题。 经过大量的研究,并实际调试了spring-boot,spring,hibernate,tomcat池等,以完成任务。 我确实认为,这将为尝试实现此类要求的人们节省大量时间。 以下是实现以下要求所需的设置 即使数据库关闭或没有数据库,Spring Boot应用程序也可以正常启动。 当数据库启动时,应用程序将即时获取连接,这意味着无需重启Web服务器或重新部署应用程序。 如果DB从运行状态下降并再次启动,则无需启动tomcat或重新部署应用程序。 application.yml: spring: datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/schema username: root password: root continueOnError: true initialize: false initialSize: 0 timeBetweenEvictionRunsMillis: 5000 minEvictableIdleTimeMillis: 5000 minIdle: 0 jpa: show-sql: true hibernate: ddl-auto: none naming_strategy: org.hibernate.cfg.DefaultNamingStrategy properties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect hbm2ddl: auto: none temp: use_jdbc_metadata_defaults: false来源:stack overflow
保持可爱mmm 2020-05-17 21:13:09 0 浏览量 回答数 0

云数据库新人专场

MySQL年付低至19.9,其它热门产品1元起购!

问题

遇到这个错误怎么办?Unknown entity:com.wangliang.m?报错

报错如下~ 五月 03, 2016 8:11:56 下午 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.1.0.Final} 五月 03, 201...
爱吃鱼的程序员 2020-06-09 14:54:53 0 浏览量 回答数 1

回答

sessionFactory就是Hibernate连数据库创建的一个session连接,后面一大坨是他相关的配置,比如packagesToScan就是当加载spring文件的时候要去扫描的包。比如<property name="hibernateProperties">就是hibernate的属性组,里面有一些hibernate的特性的东西:比如hibernate.cache.region.factory_class就是hibernate里面的eh-cache的配置就是数据缓存即从数据库读出来的东西通过它来缓存,下次同样的查询数据库就直接从缓存里面拿结果。 <prop key="net.sf.ehcache.configurationResourceName">${hibernate.ehcache.configFile}</prop>e-->eh cache的参数文件                 <prop key="hibernate.cache.use_second_level_cache">true</prop>-->是否用二级缓存                 <prop key="hibernate.cache.use_query_cache">true</prop>-->是否可以查询缓存                 类似的就不复述了,具体查一下hibernate的特性就知道了。######你的注释不是写上的吗######用过,就是学过一点,都忘了######@79043076 Hibernate没用过######不太懂Hibernate是在配置文件,则么配置的######看懂别人的代码请先把该语言或框架基本概念和术语了解通透######<!-- 加载配置属性文件 --> <context:property-placeholder ignore-unresolvable="true" location="classpath*:/app.properties" /> 有我只看懂它在加载这个属性文件######就是这SpringBean的配置文件,这里面还有什么吗###### hibernate的配置,映射配置,数据缓存配置,还有一些Hibernate特性选项的配置 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  数据源配置,主要是连接数据库的相关配置,池配置以及一些连接参数配置 <!-- 配置监控统计拦截的filters -->             <property name="filters" value="stat" />  这个没有配置完全,但是注释也写明了,是过滤器配置。 希望LZ满意。 ######能不能解释的详细一点######<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> --->配置链接数据的。             <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->             <property name="driverClassName" value="${jdbc.driver}" />              --->驱动             <!-- 基本属性 url、user、password -->             <property name="url" value="${jdbc.url}" />             <property name="username" value="${jdbc.username}" />             <property name="password" value="${jdbc.password}" />              --->用户名和密码             <!-- 配置初始化大小、最小、最大 -->             <property name="initialSize" value="${jdbc.pool.minIdle}" />             <property name="minIdle" value="${jdbc.pool.minIdle}" />              <property name="maxActive" value="${jdbc.pool.maxActive}" />              --->连接池初始化,最大和最小和最大在线链接数             <!-- 配置获取连接等待超时的时间 -->             <property name="maxWait" value="60000" />              --->连接超时等待             <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->             <property name="timeBetweenEvictionRunsMillis" value="60000" />             
kun坤 2020-06-04 11:21:11 0 浏览量 回答数 0

问题

DruidConnectionProvider失效在hibernate3.6.10?报错

@wenshao 你好,想跟你请教个问题: org.hibernate.service.jdbc.connections.spi.ConnectionProvider 已经迁移至 org...
爱吃鱼的程序员 2020-06-22 17:33:05 0 浏览量 回答数 1

回答

在hibernate配置文件中加入 <propertyname="javax.persistence.validation.mode">none</property>具体请参考:http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch22.html#d5e9775 以下是spring配置文件片段 <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.2.xsd"><context:property-placeholderignore-unresolvable="true"location="classpath*:/dataBaseInfo.properties"/><!--DI--><context:annotation-config></context:annotation-config><!--datasource--><beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><propertyname="driverClass"value="${driverClass}"/><propertyname="jdbcUrl"value="${jdbcUrl}"/><propertyname="user"value="${user}"/><propertyname="password"value="${password}"/><!--连接池中保留的最小连接数。--><propertyname="minPoolSize"value="${minPoolSize}"/><!--连接池中保留的最大连接数。Default:15--><propertyname="maxPoolSize"value="${maxPoolSize}"/><!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default:3--><propertyname="initialPoolSize"value="${initialPoolSize}"/><!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default:0--><propertyname="maxIdleTime"value="${maxIdleTime}"/><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3--><propertyname="acquireIncrement"value="${acquireIncrement}"/><!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0--><propertyname="maxStatements"value="${maxStatements}"/><!--每60秒检查所有连接池中的空闲连接。Default:0--><propertyname="idleConnectionTestPeriod"value="${idleConnectionTestPeriod}"/><!--定义在从数据库获取新连接失败后重复尝试的次数。Default:30--><propertyname="acquireRetryAttempts"value="${acquireRetryAttempts}"/><!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default:false--><propertyname="breakAfterAcquireFailure"value="${breakAfterAcquireFailure}"/></bean><beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><propertyname="dataSource"><refbean="dataSource"/></property><propertyname="configLocation"><value>classpath:hibernate/hibernate.cfg.xml</value></property></bean>以下是hibernate配置片段 <?xmlversion='1.0'encoding='UTF-8'?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.dialect">${hibernate.dialect}</property><propertyname="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</property><propertyname="hibernate.show_sql">${hibernate.show_sql}</property></session-factory></hibernate-configuration>
爱吃鱼的程序员 2020-06-22 22:34:04 0 浏览量 回答数 0

回答

HibernateTemplateHibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.HibernateDaoSupportHibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:1>public final HibernateTemplate getHibernateTemplate()2>public final void setSessionFactory(SessionFactory sessionFactory)其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活。配置方案——Spring+hibernate访问数据库有以下几种方法:1>注入SessionFactory 在spring配置文件中,对Dao注入sessionFactory,如下所示配置文件相关配置如下: <bean id="manageEmpDaoImpl" class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean> Dao编码如下: public class ManageEmpDaoImpl extends HibernateDaoSupport implements ManageEmpDao{ public void addEmp(Emp emp) { this.getHibernateTemplate().save(emp); } public List getEmpList() { return null; } } 这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。这样编写的一个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。2>注入HibernateTemplate 这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:配置文件如下所示: <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="manageEmpDaoImpl"class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl"> <property name="hibernateTemplate" ref="hibernateTemplate" /> </bean> DAO编码如下所示: public class ManageEmpDaoImpl implements ManageEmpDao { private HibernateTemplate hibernateTemplate; public void addEmp(Emp emp) { this.hibernateTemplate.save(emp); } public List getEmpList() { return null; } public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } } 前者代码虽然简便,但是继承了HibernateDaoSupport之后,没有办法再继承别的类了.用什么就看个人喜好了。在实际使用中,如果持久层继承HibernateDaoSupport的话,那么每个持久层的类,都需要注入SessionFactory,非常麻烦,有一个便捷方法: 可以自己写一个类,继承HibernatedaoSupport,把SessionFactory或者HibernateTemplate注入到这个类中,持久层继承此类。
小旋风柴进 2019-12-02 01:57:10 0 浏览量 回答数 0

问题

SSH面试题

1.什么是struts2?struts的工作原理? struts2:1)经典的  mvc (Model  View  Controller) 框架                          ...
琴瑟 2019-12-01 21:46:22 3489 浏览量 回答数 0

问题

通过自动重连方式解决RDS闪断问题

RDS闪断解决方案 一RDS闪断的原因和影响: 1、    什么是闪断? 是指游戏APP与RDS之间的网络链路在短时间内(一般不超过三十秒) 发生了的中断。 2、 ...
nono20011908 2019-12-01 21:07:16 27529 浏览量 回答数 1

问题

使用Hibernate,数据库连接一直莫名断开,求解????????报错

这个RegToChannel_id()就是在Servlet里面的doPost()调用的,其中sessionFactory我是在ini()获取的, private void RegToChannel_id(HttpServletReques...
爱吃鱼的程序员 2020-06-22 18:28:49 0 浏览量 回答数 1

回答

这是我自己的数据库连接池的配置 你只看没注释的就行了,注释掉的是给你参考看的 #oracle.driverClassName=oracle.jdbc.driver.OracleDriver #oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl #原来的数据库mysql驱动 jdbc.driverClassName=com.mysql.jdbc.Driver #使用p6spy驱动 #jdbc.driverClassName=com.p6spy.engine.spy.P6SpyDriver #使用mysql jdbc.url=jdbc:mysql://localhost:3308/skyline?useUnicode=true&rewriteBatchedStatements=true&amp;characterEncoding=utf-8 jdbc.dialect=org.hibernate.dialect.MySQLDialect #使用h2 #jdbc.url=jdbc:h2:tcp://localhost/sop #jdbc.dialect=org.hibernate.dialect.H2Dialect jdbc.username=root jdbc.password=root <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSourceC3P0Adapter" destroy-method="close"> <property name="driverClass"><value>${jdbc.driverClassName}</value></property> <property name="jdbcUrl"><value>${jdbc.url}</value></property> <property name="user"><value>${jdbc.username}</value></property> <property name="password"><value>${jdbc.password}</value></property> <!--连接池中保留的最小连接数。默认值: 3 --> <property name="minPoolSize"><value>6</value></property> <!--连接池中保留的最大连接数。默认值: 15 --> <property name="maxPoolSize"><value>200</value></property> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> <property name="maxIdleTime"><value>300</value></property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement"><value>6</value></property> <!--c3p0全局的PreparedStatements缓存的大小。 如果maxStatements与maxStatementsPerConnection均为0, 则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> <property name="maxStatements"><value>1000</value></property> <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间, 超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 --> <property name="checkoutTimeout" value="5000"/> <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--> <property name="initialPoolSize"><value>2</value></property> <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 --> <property name="idleConnectionTestPeriod"><value>0</value></property> <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--> <property name="acquireRetryAttempts"><value>30</value></property> <!--重新尝试的时间间隔,默认为:1000毫秒--> <property name="acquireRetryDelay" value="1000" /> <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 --> <property name="autoCommitOnClose"><value>false</value></property> <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。 如果定义了这个参数那么属性preferredTestQuery将被忽略。 你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null --> <!--<property name="automaticTestTable"><value>Test</value></property>--> <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留, 并在下次调用getConnection()的时候继续尝试获取连接。 如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。 默认: false--> <property name="breakAfterAcquireFailure"><value>false</value></property> <property name="testConnectionOnCheckout"><value>false</value></property> </bean> 至于jar包 给你连接 http://dev.mysql.com/downloads/connector/j/阿里的连接池 https://github.com/AlibabaTech/druid
小旋风柴进 2019-12-02 02:03:33 0 浏览量 回答数 0

回答

没玩过这些,我直接说一下我们公司内部架构的用法把,主要给你讲一下事务 什么叫做事务,不知道你用的是啥数据库,事务就是当前链接下的数据要保持一致性,也就是你上面的所谓的session,我只用Oracle数据库,如果你用过pl/sql的话你每打开一个COMMANDWINDOW他就是一个事务,当前的COMMANDWINDOW做一个数据的增,删,改,如果不提交的话,那么另外一个COMMANDWINDOW里是看不出数据的变化了的,如果需要在另外一个里面看得到数据变化,那么你需要提交事务,使用commit语句,关闭COMMANDWINDOW也就是释放事务 上面的一段配合的只是这么几句代码,我以最简单的JDBC为例 conn=DriverManager.getConnection("jdbc:mysql:///day11","root","root");//获取链接conn.setAutoCommit(false);//开启事务conn.commit();//事务提交conn.rollback();//事务回滚conn.close();//这里是关闭连接 你这里的疑问,我没玩过hibernet,但是大同小异,我以我 公司的内部框架的代码逻辑为例: 如果我是新开启一个事务,也就是你说的 opensession,那么就是新开启一个事务,如果我选择的是获取当前的事务,就是你这边的 getcurrentsession,那么我会做一下判断,当前的线程是否存在事务,如果不存在,我就会新建一个事务,而从你的这个报错看的很清楚,hibernate的获取当前事务的时候,如果不存在当前事务,那么他就直接报错了! ------菜鸟见解,欢迎拍砖,PS:JDBC的事务控制,回答这个问题的时候我才去百度,以前就一直是记JDBC五步操作,到公司直接用内部框架了,就没去认真研究! 不要狭义的理解session就是你想的那个session哈 getcurrentsession当前线程的session为了让pojo从数据库到页面到结束使用出于同一session便于hibernate代理,并添加各种操作,事务等保证状态一致, opensession开启一个新session,没有上述特点 spring其实在后面代理了你的hibernate动作,模板保证每个写操作[你配置的情况下]都有事务控制,保证数据一致性[出现异常,事务回滚] 首先明确一点,关系数据库中的事务,核心配置在DB中的由DBA设置,我们在JAVA层的操作准确的说是事务传播属性 首先说一下关系数据库中的事务特性 事务的 特性(ACID特性) A:原子性(Atomicity)    事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。B:一致性(Consistency)    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。C:隔离性(Isolation)   一个事务的执行不能被其他事务干扰。D:持续性/永久性(Durability)   一个事务一旦提交,它对数据库中数据的改变就应该是永久性的 然后在事务中存在的问题准确的说是有一些根据不同的隔离级别或业务要求是允许的 1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。 引用来自“卧枝会中田”的评论 首先明确一点,关系数据库中的事务,核心配置在DB中的由DBA设置,我们在JAVA层的操作准确的说是事务传播属性 首先说一下关系数据库中的事务特性 事务的 特性(ACID特性) A:原子性(Atomicity)    事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。B:一致性(Consistency)    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。C:隔离性(Isolation)   一个事务的执行不能被其他事务干扰。D:持续性/永久性(Durability)   一个事务一旦提交,它对数据库中数据的改变就应该是永久性的 然后在事务中存在的问题准确的说是有一些根据不同的隔离级别或业务要求是允许的 1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。
爱吃鱼的程序员 2020-06-12 15:51:30 0 浏览量 回答数 0

问题

[一天一个进阶系列] - MyBatis基础篇

前言:一直以来,很多人都是拿来主义,只停留在会使用的阶段,从未去研究挖掘其原理,剖析本质。现在慢慢探讨一下其内幕,抛砖引玉 一、简介 1)常用...
threeb1 2021-02-03 18:24:45 1 浏览量 回答数 0

问题

这个异常已经纠结好几天不能解决了,SSH项目更换高版本的mydsql就报乐观锁异?报错

一个SSH项目 Spring3  Hibernate3.3.2 Struts2  mysql5.0 以前运行是正常的 ,现在要求数据库换成mysql5.6+ 我把之前数据库的建表语句和初始数据导出来&...
爱吃鱼的程序员 2020-06-08 19:17:02 2 浏览量 回答数 1

问题

spring mvc配置 这些代码代表什么意思:配置报错 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&...
kun坤 2020-06-04 10:24:18 3 浏览量 回答数 1

问题

Spring+hibernate批量添加数据添加到9000条数据的时候报错了?报错

hibernate批量添加数据添加到8000条数据的时候,发现一个问题代码卡在session.beginTransaction(); // 开启事务  这行不走了, java.lang.NullPointerException...
爱吃鱼的程序员 2020-06-22 13:32:14 0 浏览量 回答数 1

问题

2018MySQL技术问答集锦,希望能给喜欢MySQL的同学一些帮助

小编发现问答专区中有很多人在问关于mysql的问题,小编把这些问题汇总一下,希望能给喜欢mysql的大家一些启示和帮助本帖不定期更新,喜欢的可以收藏哦如何搭建MySQL集群?https://yq.aliyun.com/ask/482768m...
技术小能手 2019-12-01 19:31:11 1856 浏览量 回答数 0

问题

JDBC 使用经验之谈 为什么选择JDBC JDBC使用经验:报错

 written by chenshu,郭春晓 为什么选择JDBC SSH架构在中国很流行,可是很多人都觉得Hibernate太慢了,所以有了MyBatis.从数据库开发技术上,EJB3大幅度借...
kun坤 2020-06-09 22:12:13 0 浏览量 回答数 1

回答

你的测试用例其实并不严谨。 T1, 因为它没有修改数据,所以,只要有基本的MVCC(多版本并发控制)的功能,就可以满足“可重复读”了,无论T2,T3,T4有没有修改数据,根本无需锁定表。 - 比如oracle,这时默认情况下,T1是从undo中读取"旧"数据。 再考虑数据库可能采用行锁,其实你要测试事务隔离级别的步骤应该是这样: 1. T1 T2 关闭autocommit; 2.T1 - select (开事务) 3.T2 - update t1看得到的记录(随便一条),注意不要commit 4.T1 - update T2中事务影响到的那条记录(此时,T1的事务就被挂起了) 5.T2 - 提交 - (这时,T1也解锁了) 要做这样的测试,其实用单纯的数据库客户端开两个SESSION还直观一些,无论是用mysql或postgresql或oracle都能完成这个测试。 确认用例正常后,再考虑多线程(JDBC),然后再考虑Spring的JDBCTemplate. 这样一步步做过去,出问题时,才容易找到原因,否则纠缠太多,不利于学习中的知识点各个击破。 ######回复 @ganqing : 我认为乐观锁不算是数据库管理系统提供的功能。任何程序都可以自己实现。你的理解也没啥大问题吧: 隔离级别是一个定义,锁是实现的手段,对这个手段的优化,提高性能,就是数据库厂商要做的事了。如通过快照实现“可重复读”的目的就是为了提高并发性。######回复 @szf : 是不是我对于隔离级别的理解有问题?######我这么做主要是为了测试下,因为我之前理解的repeatable-read实现一般是是两种方式:一个是使用共享锁,就是T2必须等待T1完成后才能操作。二是使用类似hibernate乐观锁形式的版本检查,这样T1最后提交时发现版本有问题,报异常,操作不成功。但是目前mysql的repeatable-read实现不是上面的两种方式。######回复 @ganqing : 在测试用例的2. T1 - select * from t1 for update; 3. T2 - update t1 就会锁定了。 -- 这是你要的效果? 设计成这样的应用系统那就有够烂的 -- 实话实说哈,不要介意~######回复 @ganqing : 数据库开发者一般优化的方向是提高性能和并发的同时,保证事务完整性。 你提这样的要求的理由是什么? 你希望的操作流程是怎样的呢?###### T1和T2的连接会话中,autocommit必须是0才行。 如果autocommit=1(默认),那么T1 select后, 这个事务就结束了。 这时,即使select后,也要commit,否则锁表。 还有,这个测试跟spring无关啊 ######明白你的意思了,不过spring在创建数据库连接时已经setAutoCommit=false,T1的所有操作都是在一个事务里面,只在最后提交。######因为是使用spring进行事务管理的,在配置里面将事务的隔离级别设置成了 REPEATABLE_READ,所以和spring有关吧。还有你说的autoCommit设置成0,是在哪里啊,mysql配置?
kun坤 2020-06-08 11:18:36 0 浏览量 回答数 0

问题

Druid监控页面404?报错

springboot集成Druid数据源,没有报错,但是访问不了监控登录页面 application.properties文件如下 ##validate 加载hibernate时,验证创建数据...
爱吃鱼的程序员 2020-06-06 10:53:41 4 浏览量 回答数 1

问题

SSH框架下,页面频繁查询,导致的页面载入卡死在“正在连接”

也不知道是什么问题,就是在页面频繁查询,然后页面再跳转,就卡死在“正在连接...”重启Tomcat又可以了,频繁查询后又卡死。是不是底层BaseDao之类的东西有问题,还是配置文件的某些设置不合理? &lt;bean id="dataSou...
爵霸 2019-12-01 20:06:11 2358 浏览量 回答数 2

问题

程序员报错行为大赏-配置报错

Maven本地仓库配置报错:配置报错  GO语言配置什么的都没问题,但就是LiteIDE配置不好。。。:配置报错  Maven 配置nexus仓库 POM文件报错:配置报错  10个你可能从未用过的PHP函数:配置报错  QT...
问问小秘 2020-06-11 13:18:25 6 浏览量 回答数 1

回答

组成Spring框架的每个模块(或组件)可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 1) 核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件式BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际应用程序代码分开。 2) Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校检和调度功能。 3) Spring AOP:通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EJB组件,就可以声明性事务管理集成到应用程序中。 4) Spring DAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次机构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层次结构。 5) Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所欲这些都遵从Spring的通用事务和DAO异常层次结构。 6) Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与Jakarta Struts的集成。Web模块还简化了处理多部分请求参数绑定到域对象的工作。 7) Spring MVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Titles、iText和POI。
苍霞学子 2020-04-19 23:15:43 0 浏览量 回答数 0

回答

Re关于RDS的性能 ping的数据如下: ds.aliyuncs.com (ip) 56(84) bytes of data. 64 bytes from ip: icmp_req=1 ttl=54 time=1.21 ms 64 bytes from ip: icmp_req=2 ttl=54 time=1.21 ms 64 bytes from ip: icmp_req=3 ttl=54 time=1.23 ms 64 bytes from ip: icmp_req=4 ttl=54 time=1.20 ms 看起来还好 ------------------------- 回1楼小猪猪的帖子 嗯,我试试用hibernate 2nd level cache,减少数据库的直接访问 ------------------------- 回2楼mayle的帖子 ping的数据还好,1.x ms 那现在的解释可能是,链接建立时间? 我是新手,配置mysql有个connection pool,这算是使用了长连接吗? 谢谢! ------------------------- 回7楼mayle的帖子 我用的java melody做的profiling 今天我打开了memcache,从而减少数据库访问,request的处理时间明显下降。 进一步说明,确实是因为访问数据库造成了性能下降。 另外,值得注意的是:数据库操作时间跟数据库sql hit的个数呈线性关系(我观察了大概10几个request,需要我也可以贴图),大概一个hit需费时4ms;这说明应该不是短长链接引起的; 我截了图,只放了一个request的数据;第一行是memcache打开之前的,第二行是memcache打开之后的数据。 ------------------------- Re关于RDS的性能 忘了说了,最后两列是数据库相关的。其中,最后一列是ms,倒数第二列是sql hit count 第四列绿色的数字,是request总耗时。 ------------------------- 回11楼mayle的帖子 刚刚申请加入了,能否帮忙转贴下分析结果。我现在进去,之前的聊天记录我应该看不到的吧 ------------------------- Re关于RDS的性能 我刚刚弄了一张最小的表,然后在RDS以及本地的数据库上都通过rest api进行操作,每个操作都只是简单的一个select 数据如下 第一行是数据库在RDS的性能,可以明显看到每个sql hit的mean time为3ms 第二行是数据库在本地(本地是个性能非常一般的机器),每个sqlhit的mean time为0(说明小于1ms) 期待大牛解释 ------------------------- Re关于RDS的性能 #include <mysql/mysql.h>#include <stdio.h>#include <unistd.h>#include <time.h>int main(void) {   MYSQL *conn;   MYSQL_RES *res;   MYSQL_ROW row;  /* Change me */   char *server = "rdsql.rds.aliyuncs.com";   char *user = "userXXX";   char *password = "XXXXX";   char *database = "XXXX";      conn = mysql_init(NULL);      /* Connect to database */   if (!mysql_real_connect(conn, server,         user, password, database, 0, NULL, 0)) {      fprintf(stderr, "%s\n", mysql_error(conn));      exit(1);   }      struct timeval start, end;   long secs_used,micros_used;   gettimeofday(&start, NULL);   char *sql_cmd = "SELECT * FROM user where id=11";   /* send SQL query */   if (mysql_query(conn, sql_cmd)) {      fprintf(stderr, "%s\n", mysql_error(conn));      exit(1);   }   gettimeofday(&end, NULL);   printf("start: %d secs, %d usecs\n",start.tv_sec,start.tv_usec);   printf("end: %d secs, %d usecs\n",end.tv_sec,end.tv_usec);   secs_used=(end.tv_sec - start.tv_sec); //avoid overflow by subtracting first   micros_used= ((secs_used*1000000) + end.tv_usec) - (start.tv_usec);   printf("Execute SQL %s micros_used: %d\n",sql_cmd, micros_used);   res = mysql_use_result(conn);   int num_fields = mysql_num_fields(res);   /* output table name */   printf("Result of %s is :\n", sql_cmd);   while ((row = mysql_fetch_row(res)) != NULL) {      int i;      for (i = 0; i < num_fields; i++) {          printf("%s ", row ? row : "NULL");      }      printf("\n");   }   /* close connection */   mysql_free_result(res);   mysql_close(conn);    return 0;} ------------------------- Re关于RDS的性能 gcc -o select_one_row mysql_select_one_row.c -lmysqlclient------------------------- Re关于RDS的性能 总结一下,使用RDS,肯定会比local的mysql要慢。具体是一个sql select操作,RDS大概会费时3到4ms,而local的mysql server,大概是0.4到0.5ms。原因应该就是网络延迟,ping rds大概是1.3ms;本来我不理解的是,local的0.4ms 加上网络延迟1.3ms,到了RDS最多也就是2ms,怎么会变成3到4ms;可能的解释是,ping也就是一个来回,而且是比较简单的网络协议;sql操作可能会涉及到一些握手行为,多加一个来回,就是多1ms多。------------------------- Re关于RDS的性能 嗯,看我代码,profile相关的代码,只是包含了select 操作,没有包含建立链接以及关闭链接------------------------- 回23楼joyzheng的帖子 第一个问题见20楼第二个问题,我的理解,是的------------------------- Re关于RDS的性能 最后回复下21楼,2000次的select,平均下来的sql操作也是3.x msstart: 1410340266 secs, 704180 usecsend: 1410340274 secs, 412382 usecsExecute SQL SELECT * FROM user where id=%d 2000 times, average micros_used: 3854  
打靶归来 2019-12-02 00:19:53 0 浏览量 回答数 0

问题

荆门开诊断证明-scc

(微)电〗【186-6605-3854〗号【精品问答】Java技术1000问(1) 问问小秘 2019-11-15 11:24:15 9099 为了方便Java开发者快速找到相关技术问题和答案,开发...
游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

问题

Spring+hibernate+druid配置报错?报错

软件版本 Spring3.2.4、hibernate-4.2.5?、druid-0.2.26 配置如下 xml: <?xml version="1.0" encoding=&...
爱吃鱼的程序员 2020-06-22 15:38:47 0 浏览量 回答数 1

问题

Spring+hibernate+druid配置报错:报错

软件版本 Spring3.2.4、hibernate-4.2.5?、druid-0.2.26 配置如下 xml: <?xml version="1.0" encoding=&...
kun坤 2020-06-06 22:49:32 0 浏览量 回答数 1

问题

Spring+hibernate+druid配置报错 - java报错

软件版本 Spring3.2.4、hibernate-4.2.5?、druid-0.2.26 配置如下 xml: <?xml version="1.0" encoding=&...
montos 2020-05-31 09:29:19 0 浏览量 回答数 1

问题

Spring+hibernate+druid配置报错403.10 禁止访问:配置无效 

软件版本 Spring3.2.4、hibernate-4.2.5?、druid-0.2.26 配置如下 xml: <?xml version="1.0" encoding="UTF-8...
kun坤 2020-05-27 20:03:28 5 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT 阿里云科技驱动中小企业数字化