标签: insertion

使用Hibernate和Spring进行批量插入

我的应用程序基于Hibernate 3.2和Spring 2.5.以下是应用程序上下文中与事务管理相关的代码段:

  <tx:annotation-driven transaction-manager="txManager"/>
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
          <property name="sessionFactory" ref="sessionFactory"/>
          <property name="nestedTransactionAllowed" value="true"/> 
    </bean> 
    <bean id="transactionTemplate"  classs="org.springframework.transaction.support.TransactionTemplate">
           <property name="transactionManager" ref="txManager"/>
    </bean>
    <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configLocation" value="classpath:/hibernate.cfg.xml"></property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

对于所有DAO,都有相关的Service类,并且使用@Transactional服务层中的每个方法处理事务.但是现在有一个场景,DAO中的方法说服务层调用"parse()".在我指定的服务层中@Transactional(readOnly=false).DAO中的这个解析方法在同一个DAO中调用另一个方法说"save()",它在数据库中存储了大量的行(大约5000个).现在,在解析函数的循环中调用save方法.现在的问题是,在大约100次调用"保存"方法之后..我有时会得到OutOfMemory异常或有时程序停止响应.

现在这些是我对save方法所做的更改:

Session session = getHibernateTemplate().getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();

            int counter = 0;
            if(books!=null && !books.isEmpty()){
                for (Iterator iterator = books.iterator(); iterator
                        .hasNext();) {
                    Book book = (Book) iterator.next();
                    session.save(book);
                    counter++;
                    if(counter % 20==0) {
                         session.flush();
                         session.clear();
                    }
                }
            }
            tx.commit();
        session.close();
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序中唯一的方法,我开始这样的事务并在方法结束时提交它.否则我通常只是打电话getHibernateTemplate.save() …

java spring hibernate insertion spring-batch

5
推荐指数
2
解决办法
9710
查看次数

Codeigniter,事务中的错误跟踪

我在CodeIgniter中运行一个小方法来在数据库中插入一些行(同一个表).我想看看在事务中哪个插入失败(通过返回标题数组).我的代码是:

$failure = array(); //the array where we store what failed
$this->db->trans_start();
foreach ($data as $ressourceCsv){ //data is an array of arrays to feed the database
    $this->ajout_ressource($ressourceCsv); //method to insert (basically, just an insert with active record)
    if (($this->db->_error_message())!=null) { 
          $failure[] = $ressourceCsv['title']; 
    }
}
$this->db->trans_complete();
return $failure;
Run Code Online (Sandbox Code Playgroud)

事实是,如果我不使它成为一个事务(没有$ this-> db-> trans _...),它完美地工作,我有一个包含几个标题的数组.但是对于事务,数组包含自第一个错误以来的所有标题.有没有办法从插入中获取导致事务回滚的标题?

我也尝试过:

$failure = array(); //the array where we store what failed
$this->db->trans_start();
foreach ($data as $ressourceCsv){ //data is an array of arrays to feed the database

    if …
Run Code Online (Sandbox Code Playgroud)

database activerecord transactions codeigniter insertion

5
推荐指数
1
解决办法
3924
查看次数

如何定义静态运算符<<?

是否可以定义静态插入操作符,该操作符仅对类的静态成员进行操作?就像是:

class MyClass
{
public:
    static std::string msg;

    static MyClass& operator<< (const std::string& token) {
        msg.append(token);
        return *this;   // error, static
    }
};
Run Code Online (Sandbox Code Playgroud)

或者:

static MyClass& operator<< (MyClass&, const std::string &token)
{
    MyClass::msg.append(token);
    return ?;
}
Run Code Online (Sandbox Code Playgroud)

这就是我想用它的方式:

MyClass << "message1" << "message2";
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ static insertion operator-keyword

4
推荐指数
1
解决办法
6305
查看次数

插入排序分析和求和表示法

我试图理解插入排序的最坏情况分析,我在幻灯片21(ppt)上涉及的数学问题.

我理解第一个公式:

Σ(j = 1到n)j = n(n + 1)/ 2

但这些我正在努力:

  1. 为什么- 1最后有?
    Σ(j = 2到n)j = n(n + 1)/ 2-1
  2. 另外,我不明白这个:
    Σ(j = 2到n)(j-1)= n(n-1)/ 2

algorithm complexity-theory insertion

4
推荐指数
1
解决办法
2890
查看次数

class没有成员"operator <<"

我已经通读了运算符<<被实现为朋友还是作为成员函数?C++中的重载插入运算符看起来像是类似的问题,但没有解决我自己的问题.

我的头文件:

using namespace std;

class Animal {
private: 
    friend ostream & operator<< (ostream & o, Dog & d);
    int number;
public:
    Animal(int i);
    int getnumber();

};

ostream & operator<< (ostream & o, Dog & d);
Run Code Online (Sandbox Code Playgroud)

我的cpp:

using namespace std;

int Animal::getnumber(){
    return number;
}

ostream & Animal::operator<< (ostream & o, Dog & d){
    //...
}

Animal::Animal(int i) : number(i){}
Run Code Online (Sandbox Code Playgroud)

实现很简单,但我收到错误:在cpp中 - 错误:类"Animal"类没有成员"operator <<".我真的没有得到它,因为我已经在Animal中将插入操作符声明为朋友,为什么我仍然会收到此错误?(把ostream放在公共场合并没有帮助)

c++ ostream insertion

4
推荐指数
1
解决办法
3371
查看次数

在Oracle中选择随机行

我需要从一个表中随机选择值,例如tableA.a_ida VARCHAR2,并使用该值插入另一个表中.例如,假设需要将三列插入100行tableX(序列号,100到999之间的随机数,以及值tableA.a_id):

insert into tableX
select
    rownum,
    dbms_random.value(100,999), 0),
    (select a_id from 
    (
      SELECT a_id 
      FROM tableA
      ORDER BY dbms_random.value
    )
    where rownum = 1)
from
   (select level from dual connect by level <= 100);
Run Code Online (Sandbox Code Playgroud)

但是,不是从tableA.a_id每行中选择一个随机行,而是为所有行选择相同的值,例如:

1 129 A-ID-48
2 849 A-ID-48
3 367 A-ID-48
Run Code Online (Sandbox Code Playgroud)

但是,如果我重复执行子查询,每次都会得到一个新值(原因很明显),例如:

select a_id from 
    (
      SELECT a_id 
      FROM tableA
      ORDER BY dbms_random.value
    )
where rownum = 1;
Run Code Online (Sandbox Code Playgroud)

结果将在每次执行后:

A-ID-7
A-ID-48
A-ID-74
Run Code Online (Sandbox Code Playgroud)

如何改变原来的查询,或拿出一个新的对于这个问题,这将来自随机行中插入tableA的 …

sql oracle random insertion

4
推荐指数
1
解决办法
6832
查看次数

在匹配文本之前插入新的文本行

在文本文件中,我想使用perl在另一行文本的每个匹配之前插入一行新文本.

示例 - 我的文件是:

holiday
april
icecream: sunday
jujubee
carefree
icecream: sunday
Christmas
icecream: sunday
towel

...
Run Code Online (Sandbox Code Playgroud)

我想'icecream: saturday'在' icecream: sunday'行之前插入一行文本.所以之后,文本文件看起来像.是的,我需要结肠:在搜索和替换模式中都.

holiday
april
icecream: saturday
icecream: sunday
jujubee
carefree
icecream: saturday
icecream: sunday
Christmas
icecream: saturday
icecream: sunday
towel
...
Run Code Online (Sandbox Code Playgroud)

我想在Windows PC上使用perl 5.14来做这件事.我已经安装了Perl.我在这个网站上搜索并尝试了很多其他的例子,但它们并不适合我,不幸的是我不是Perl的完整专家.

如果有一个例子也使用sed我也有Cygwin sed.

perl file-io parsing insertion

3
推荐指数
1
解决办法
6327
查看次数

使用C++中的无序数据填充向量

我想用一个(在运行时已知)数据量填充向量,但元素到达(索引,值)对而不是原始顺序.这些索引保证是唯一的(每个索引从0到n-1只出现一次)所以我想将它们存储如下:

vector<Foo> myVector;
myVector.reserve(n); //total size of data is known
myVector[i_0] = v_0; //data v_0 goes at index i_0 (not necessarily 0)
...
myVector[i_n_minus_1] = v_n_minus_1;
Run Code Online (Sandbox Code Playgroud)

这似乎在大多数情况下都能正常工作; 在代码的末尾,所有n个元素都在向量中的适当位置.但是,某些向量函数不能按预期工作:

...
cout << myVector.size(); //prints 0, not n!
Run Code Online (Sandbox Code Playgroud)

对我来说重要的是功能size()仍然有效 - 我可能想检查一下,如果通过检查是否所有元素实际插入成功size() == n.我是否错误地初始化了向量,如果是这样,我该如何处理呢?

c++ size vector insertion

3
推荐指数
1
解决办法
134
查看次数

为什么小写[i]在可视块模式下不起作用?

我经常忘记如何以视觉块模式插入并再次阅读答案Shift+i.

正如洪河.吴在评论中不知所措:

为什么小写i在视觉模式下不起作用?

技术原因是什么?

vim keyboard-shortcuts insertion

3
推荐指数
2
解决办法
413
查看次数

插入新元素时如何平滑移动?

我在其他元素中间插入一个新的 div 元素,我希望其他元素以流畅的方式移动到新位置,而不是像目前这样突然移动。

这是我的代码:https : //codepen.io/BigEiffelTower/pen/vYBgqZq

<div id="top">
  Top of the page
</div>

<div id="middle">

</div>

<div id="bottom">
  <form> 
    <input type="button" value="Add an element">
  </form>
  End of the page
</div>
Run Code Online (Sandbox Code Playgroud)
#top, #middle, #bottom {
  font-size: 1.5em;
  border: 2px solid black;
  margin: 0.3em
  transition: all 2s ease;
}
Run Code Online (Sandbox Code Playgroud)
var btn = document.querySelector('input');
btn.addEventListener('click', updateBtn);

function updateBtn() {
    $el = $("<div>", {
            id: 'middle-item',
            text: "New element"
        });
    $("#middle").append($el);
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时如何使#three 元素平滑移动?

html javascript css smoothing insertion

3
推荐指数
1
解决办法
908
查看次数