Tag: 交易

是否有一个API来获得银行交易和银行余额?

我正在使用CHASE银行。 (也是美国银行),如果可以的话,我想要得到我的银行交易和余额。 有没有一个API? 在PHP或JAVA? 如果是这样,请让我知道如何得到它们。

如何解决MongoDB中缺less事务的问题?

我知道这里有类似的问题,但是他们要么告诉我 ,如果我需要事务或者使用primefaces操作或者两阶段提交,就要回到常规的RDBMS系统。 第二个解决scheme似乎是最好的select。 第三,我不想跟随,因为看来很多事情可能会出错,我不能在各个方面进行testing。 我很难重构我的项目来执行primefaces操作。 我不知道这是否来自我有限的观点(我迄今为止只使用过SQL数据库),还是实际上无法完成。 我们想在我们公司试用MongoDB。 我们select了一个相对简单的项目 – 一个短信网关。 它允许我们的软件发送SMS消息到蜂窝networking,网关完成肮脏的工作:实际上通过不同的通信协议与提供商进行通信。 网关还pipe理消息的计费。 每个申请服务的客户都必须购买一些信用。 发送信息时系统自动降低用户的余额,如果余额不足,则拒绝访问。 另外因为我们是第三方短信服务提供商的客户,我们也可能有自己的余额。 我们也必须跟踪这些。 我开始考虑如何降低一些复杂性(外部计费,排队短信发送),如何使用MongoDB存储所需的数据。 来自SQL世界,我会为用户创build一个单独的表,另一个用于SMS消息,另一个用于存储关于用户余额的事务。 比方说,我为MongoDB中的所有人创build了单独的集合。 在这个简化的系统中,想象一下使用以下步骤的SMS发送任务: 检查用户是否有足够的余额; 拒绝访问,如果没有足够的信用 将消息发送并存储在SMS收集中,具体细节和成本(在实时系统中,消息将具有status属性,并且任务将会拿起它来交付并根据其当前状态来设置SMS的价格) 通过发送消息的成本来减less用户的余额 将事务logging在事务集合中 现在有什么问题? MongoDB只能在一个文档上进行primefaces更新。 在之前的stream程中,可能会发生某种错误,并将消息存储在数据库中,但用户的余额不会更新和/或事务未被logging。 我想出了两个想法: 为用户创build一个集合,并将余额作为字段,与用户相关的交易和消息作为子文档存储在用户的文档中。 因为我们可以自动更新文件,这实际上解决了交易问题。 缺点:如果用户发送很多短消息,文档的大小可能会变大,可能达到4MB的文档限制。 也许我可以在这种情况下创build历史文档,但我不认为这是一个好主意。 另外我不知道如果我把越来越多的数据推送到同一个大文件系统会有多快。 为用户创build一个集合,为事务创build一个集合。 可以有两种交易:正余额变化的信用卡购买和负余额变化的消息 。 交易可能有一个子文件; 例如在发送的消息中可以将SMS的细节embedded到事务中。 缺点:我不存储当前的用户余额,所以每次用户试图发送消息时都要计算它是否可以通过消息。 恐怕这个计算可能会随着存储事务数量的增长而变慢。 我有点困惑要select哪种方法。 还有其他解决scheme吗? 我无法在网上find任何有关如何解决这些问题的最佳实践。 我想很多想要熟悉NoSQL世界的程序员在开始时都面临类似的问题。

Spring @Transactional属性是否在私有方法上工作?

如果我在Spring bean的私有方法上有一个@Transactional -annotation,注释是否有效? 如果@Transactional注释在公共方法上,它将工作并打开一个事务。 public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } } … Bean bean = (Bean)appContext.getBean("bean"); bean.doStuff();

使用Spring和Hibernate跨多个数据库进行分布式事务的“最佳”方式是什么?

我有一个应用程序 – 更像是一个实用程序 – 位于一个angular落,并定期更新两个不同的数据库。 这是一个有点独立的应用程序,已经build立了一个Spring应用程序上下文。 上下文中configuration了两个Hibernate Session Factories,然后使用Spring中configuration的Commons DBCP数据源。 目前没有交易pipe理,但是我想补充一些。 对一个数据库的更新取决于对另一个数据库的成功更新。 该应用程序不在Java EE容器中 – 它由从shell脚本调用的静态启动器类引导。 启动器类实例化应用程序上下文,然后在其一个bean上调用一个方法。 在数据库更新中使用事务性的“最佳”方法是什么? 我会把“最好”的定义留给你,但我认为它应该是“容易设置”,“容易configuration”,“便宜”和“容易打包和重新分配”等function。 自然,FOSS会很好。

如何将Spring与Hibernate会话和事务pipe理集成?

我是冬眠和spring的初学者。 我已经了解了hibernate事务划分(至less我是这么认为的)。 但是在编写这样几个方法之后: sessionFactory.getCurrentSession().beginTransaction(); //do something here sessionFactory.getCurrentSession().endTransaction(); 我开始想避免它,并希望在我的方法之外自动完成,这样我只写“//在这里做某事”部分。 我已经阅读了关于TransactionProxyFactoryBean,并认为XMLconfiguration是非常长的,必须重复每个类我想使交易,所以如果可能我要避免使用它。 我试图使用@Transactional,但它根本不工作。 我在我的applicationContext.xml中有这些行 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml" /> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="dataSource" ref="dataSource" /> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> 我已经用@Transactional标记了我的服务类,但是我总是得到“xxx没有活动事务无效”。 这是一个示例代码给我一个错误(在unit testingbtw中运行): @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:applicationContext.xml" }) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) public […]

@PostConstruct方法上的@Transactional

我想在我的应用程序的开始读取文本数据灯具 (CSV文件),并将其放入我的数据库。 为此,我使用初始化方法( @PostConstruct注释)创build了一个PopulationService 。 我也希望它们在一个事务中被执行,因此我在同一个方法中添加了@Transactional 。 但是,@Transactional似乎被忽略了:事务在我的低级DAO方法中被启动/停止。 我需要手动pipe理交易吗?

Spring @Transactional不起作用

我以前在这个问题上已经解决了一个职位。 但是,由于使用自动连线bean和较less的XMLconfiguration重build项目,我发现我正在重新审视这个问题。 我已经按照我以前的项目实施这个方式,但它不工作。 有人能帮助我为什么或者我应该改变什么来使它工作? 我有意使用插入用户详细信息方法中不存在的表名来故意引发exception。 但是,插入用户和插入用户angular色的语句不会回滚。 请帮忙。 我目前的注册devise是这样的。 部分servlet.xml : <context:component-scan base-package="com.doyleisgod.golfer.controllers"/> <context:component-scan base-package="com.doyleisgod.golfer.dao"/> <context:component-scan base-package="com.doyleisgod.golfer.services"/> <context:component-scan base-package="com.doyleisgod.golfer.validators"/> 部分应用程序上下文 : <context:annotation-config /> <tx:annotation-driven /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> 注册控制器 : package com.doyleisgod.golfer.controllers; import javax.validation.Valid; import […]

Android数据库交易

我创build了一个数据库。 我想做交易。 SaveCustomer()包含多条语句,当时将logging插入到Customer, CustomerControl, Profile, Payment表中。 当用户调用SaveCustomer()方法时,那么这些数据将会转到这4个表。我怎样才能做这个事务呢? 如果一个表插入失败,那么需要回滚一切。 例如,当第三个表插入logging时,我得到一个错误,那么还需要回滚前两个表的插入logging。 看我的代码: public void saveCustomer(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); initialValues.put("CustomerName",customer.getName()); initialValues.put("Address",customer.getAddress()); initialValues.put("CustomerPID",strPID); initialValues.put("Date",strDateOnly); long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues); } 同样也有其他的说法。 DBAdpter代码是: public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) { long n =-1; try { myDataBase.beginTransaction(); n = myDataBase.insert(tableName, nullColumnHack, initialValues); […]

如何debugging在MySQL上超出locking等待超时?

在我的生产错误日志中偶尔会看到: SQLSTATE [HY000]:一般错误:1205锁超时超时; 尝试重新启动事务 我知道当时哪个查询试图访问数据库,但是有什么方法可以找出哪个查询在那个时刻locking了?

PHP + MySQL事务的例子

我真的没有find正在使用MySQL交易的PHP文件的正常例子。 你能告诉我一个简单的例子吗? 还有一个问题。 我已经做了很多编程,并没有使用交易。 我可以把一个PHP函数或什么东西在header.php ,如果一个mysql_query失败,那么其他人也失败了? 我想我已经明白了,是不是? mysql_query("SET AUTOCOMMIT=0"); mysql_query("START TRANSACTION"); $a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')"); $a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')"); if ($a1 and $a2) { mysql_query("COMMIT"); } else { mysql_query("ROLLBACK"); }