当前位置: 首页 > news >正文

益阳网站建设哪里好实际讲解做钓鱼网站

益阳网站建设哪里好,实际讲解做钓鱼网站,广西建设工程质量监督网站,北海网站制作公司本周是时候将我们的代码库升级到最新的Hibernate 4.x了。 我们推迟了迁移#xff08;仍在Hibernate 3.3上#xff09;#xff0c;因为3.x分支的较新维护版本需要对API进行一些更改#xff0c;这些更改显然仍在不断变化中。 一个示例是UserType API#xff0c;该API仍然存在… 本周是时候将我们的代码库升级到最新的Hibernate 4.x了。 我们推迟了迁移仍在Hibernate 3.3上因为3.x分支的较新维护版本需要对API进行一些更改这些更改显然仍在不断变化中。 一个示例是UserType API该API仍然存在缺陷将在Hibernate 4中完成。迁移非常顺利。 使UserType适应新界面非常简单。 到处都有一些刺激但没有痛苦。 需要注意的是Spring集成。 如果您以前将Spring与Hibernate结合使用则将使用LocalSessionFactoryBean 或AnnotationSessionFactoryBean 创建SessionFactory 。 对于休眠4 在自己的程序包中有一个单独的程序org.springframework.orm。 hibernate4而不是org.springframework.orm。 休眠3 。 hibernate 4包中的LocalSessionFactoryBean将同时用于映射文件和带注释的实体因此两种样式都只需要一个。 升级完成后我们的所有测试都在运行并且使用本地Hibernate事务管理器在Tomcat上的应用程序也运行良好。 但是当使用JTA事务和Spring的JtaTransactionManager 在Glassfish上运行时在调用sessionFactory.getCurrentSession时我们得到了“未找到当前线程的会话” 。 因此似乎我错过了与JTA配置有关的内容。 像通常使用Spring-Hibernate集成一样让Spring驱动事务。 您指定一个事务管理器Spring确保所有资源都已在事务管理器中注册并最终调用提交或回滚。 Spring将与Hibernate集成因此可确保在事务提交之前刷新会话。 使用hibernate 3和hibernate 3 Spring集成时会话绑定到本地线程。 此技术使您可以使用sessionFactory.getCurrentSession获取活动事务中任何位置的打开会话。 本地HibernateTransactionManager和JtaTransactionManager都是这种情况。 但是从hibernate 4集成开始hibernate会话将绑定到当前正在运行的JTA事务。 从用户的角度来看什么都没有改变因为sessionFactory.getCurrentSession仍会完成其工作。 但是当运行JTA时这意味着Hibernate必须能够查找事务管理器以能够向当前正在运行的事务中注册会话。 如果您来自带有Spring的Hibernate 3这是新的实际上您不必在Hibernate SessionFactory 或LocalSessionFactoryBean 配置中配置任何与事务有关的内容。 事实证明通过Hibernate 4 Spring集成事务管理器查找配置实际上是由hibernate完成的而不是由Spring的LocalSessionFactoryBean完成的 。 解决方案非常简单。 将其添加到Hibernate LocalSessionFactoryBean 配置中解决了我们的问题 prop keyhibernate.transaction.jta.platform org.hibernate.service.jta.platform.internal.SunOneJtaPlatform /prop 然后应将“ SunOneJtaPlatform”替换为反映您的容器的子类。 有关可用的子类请参阅API文档 。 此类实际上是在告诉Hibernate如何为您的环境查找事务管理器。 如果您不进行配置则Hibernate不会将会话绑定到任何东西因此不会引发异常。 还有一个属性 hibernate.current_session_context_class 它应该指向org.springframework.orm.hibernate4.SpringSessionContext 但这是由LocalSessionFactoryBean自动完成的因此无需在配置中指定它。 解决了我的“当前会话未找到会话”问题后还有另一个问题。 成功提交事务后将看不到对事务内部的数据库所做的更改。 经过一番研究我发现没有人在调用session.flush 。 在进行hibernate 3集成时注册了SpringSessionSynchronization 它将在事务提交之前在beforeCommmit方法中调用session.flush 。 在hibernate 4集成中注册了SpringFlushSynchronization 顾名思义 它还将执行刷新。 但是这仅在TransactionSynchronization的实际“刷新”方法中实现并且永远不会调用此方法。 我在Spring Bugtracker上对此提出了一个问题 其中包括两个示例应用程序它们清楚地说明了该问题。 第一个使用的是Hibernate 3另一个使用的是完全相同的应用程序但是这次使用的是hibernte4。第二个将显示实际上没有任何信息持久化到数据库中两个应用程序都在最新的Glassfish 3.1.2下进行了测试。似乎正在创建一个环绕Transactional注释的冲洗Aspect。 使用order属性可以命令在刷新Aspect之前应用事务注释。 这样您的Aspect仍在事务内部运行并且能够刷新会话。 它可以通过注入SessionFactory 一种方式或另一种方式然后调用sessionFactory.getCurrentSession。flush来以正常方式获取会话。 tx:annotation-driven order1bean idflushinAspect clas...property nameorder value2 /property/bean /tx:annotation-driven 或者如果使用注释配置 EnableTransactionManagement(order1)更新 关于此问题有一些反馈。 事实证明这似乎不是Spring Hibernate集成中的错误而是缺少的Hibernate配置元素。 显然“ hibernate.transaction.factory_class”需要设置为JTA默认值为JDBC它依赖于Hibernate Transaction API进行显式事务管理。 通过将此设置为JTA休眠将注册必要的同步该同步将执行刷新。 见春 https://jira.springsource.org/browse/SPR-9404 更新2 事实证明在按照上一个问题建议的配置进行纠正后仍然存在问题。 我将不重复任何事情您可以在我在此处提交的第二个错误条目中找到详细信息 https : //jira.springsource.org/browse/SPR-9480它基本上可以归结为在JTA场景中在配置了JtaTransactionFactory的情况下hibernate不会检测到它在事务中因此将不执行中间刷新。 配置了JtaTransactionFactory之后您应该通过Hibernate API而不是外部在我们的例子中为Spring机制来控制事务。 副作用之一是在某些情况下您可能正在读取陈旧的数据。 例 //[START TX1] Query query session.createQuery(from Person p where p.firstName :firstName and p.lastName :lastName); Person johnDoe (Person)query.setString(firstName,john).setString(lastName,doe).uniqueResult(); johnDoe.setFirstName(Jim); Person jimDoe (Person)query.setString(firstName,jim).setString(lastName,doe).uniqueResult(); //[END TX1] 发生的情况是在第5行执行第二个查询时hibernate应该检测到它应该刷新对第4行的附加实体所做的先前更新将名称从“ john”更新为“ jim”。 但是由于休眠不知道它在一个活动事务中运行因此中间刷新不起作用。 在事务提交之前它将仅刷新一次。 这会导致数据过时因为第二个查询将找不到“ jim”而是返回null。 解决方案请参阅问题中Juergen Hoeller的答复是将hibernate.transaction.factory_class配置为org.hibernate.transaction.CMTTransactionFactory 。 刚开始我有点怀疑因为CMT使EJB容器成为现实。 但是如果您阅读有关CMTTransaction的Java文档则确实有道理 /*** Implements a transaction strategy for Container Managed Transaction (CMT) scenarios. All work is done in* the context of the container managed transaction.** The term CMT is potentially misleading; the pertinent point simply being that the transactions are being* managed by something other than the Hibernate transaction mechanism.** Additionally, this strategy does *not* attempt to access or use the {link javax.transaction.UserTransaction} since* in the actual case CMT access to the {link javax.transaction.UserTransaction} is explicitly disallowed. Instead* we use the JTA {link javax.transaction.Transaction} object obtained from the {link TransactionManager} 之后一切似乎都正常。 综上所述如果您希望休眠状态通过UserTransaction管理JTA事务则应使用JtaTransactionFactory。 在这种情况下您必须使用Hibernate API来控制事务。 如果还有其他人管理事务SpringEJB容器……则应改用CMTTransactionFactory。 然后通过使用javax.transaction.TransactionManager检查活动的javax.transaction.TransactionHibernate将恢复为注册同步。 如果弹出任何其他问题我将相应地更新此条目。 参考在Koen Serneels –技术博客博客上我们的JCG合作伙伴 Koen Serneels 通过Spring集成从Hibernate 3迁移到4 。 翻译自: https://www.javacodegeeks.com/2013/03/migrating-from-hibernate-3-to-4-with-spring-integration.html
http://www.yutouwan.com/news/9303/

相关文章:

  • 企业网站建设怎么做昆明的花仙子制作的企业
  • 佛山市平台购物网站制作公司网站后台如何更换在线qq咨询代码
  • 济宁贵网站建设免费咨询图片
  • 全能网站建设鞍山建设工程信息网站
  • 做文献的ppt模板下载网站通用企业网站织梦模板(红绿蓝三色)
  • 建站网站 国外网站建设计划时间节点
  • 岳阳有哪几家做网站的淘宝网网站建设的需求分析
  • 旅游网站开发系统的er图平阳县建设局网站
  • 个人网站做电商软件定制项目
  • 做网站的上海市哪家技术好php网站开发外文文献
  • 企业管理生产管理系统深圳关键词优化
  • 网站后台的数据库怎么做深圳网站建设 信科网络
  • 利趣网站开发商react.js做的网站
  • 无锡市建设招标网站wordpress接入qq登陆
  • 简述电子商务网站建设的主要步骤怎么建设一个网站
  • 小精灵网站在线做语文文山网站建设求职简历
  • 网站规划与设计论文wordpress 密码破解
  • 深圳服饰网站建设企业注册信息查询单怎么打印
  • 适合机械网站的wordpress主题模板网站宣传工作
  • 网站聊天工具代码泉州网站建设开发
  • 深圳网站建设公司收费政务网站建设工作计划
  • 建设局域网网站wordpress文章内模板
  • 贸易网站建设案例房产网站制作方案
  • 自助网站建设费用哪个网站名片做的号
  • 网站维护需要做什么应用下载app
  • 移动终端网站开发一个网站有几个域名
  • nas可做网站服务器吗怎么在百度上搜到自己的网站
  • 怎么免费做文学网站公司网站建app
  • 数据来源于网站需如何做脚注加强企业门户网站建设
  • 东西湖网站建设网站ftp根目录