hibernate之List&Set批量插入

package com.chris.pojo;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class User {
    private Integer userid;
    private String name;
    private List<String> address_list;
    private Set<String> address_set;

    public Set<String> getAddress_set() {
        return address_set;
    }
    public void setAddress_set(Set<String> address_set) {
        this.address_set = address_set;
    }
    public List<String> getAddress_list() {
        return address_list;
    }
    public void setAddress_list(List<String> address_list) {
        this.address_list = address_list;
    }
    public Integer getUserid() {
        return userid;
    }
    public void setUserid(Integer userid) {
        this.userid = userid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

User.java

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.chris.pojo">
    <class name="User" table="user_table">
        <id name="userid">
            <generator class="native"></generator>
        </id>
        <!-- set表示需要映射的属性是一个set集合 table:表示集合对应的表明 key:表示外键列,它会自动关联到test_user表中的主键
            element:表示集合表中的元素 -->

        <set name="address_set" table="address_table4" >
            <key column="user_id"></key>
            <element type="string" column="address"></element> </set>
    <!--     -->
        <list name="address_list" table="address_list">
            <key column="user_id"></key>
            <list-index column="idx" />
            <element type="string" column="address"></element>
        </list>

        <!-- map表示需要映射的属性是一个Map集合 table:表示集合对应的表明 key:表示外键列,它会自动关联到user2表中的主键 map-key
            map集合的key element:map集合的value -->
    </class>
</hibernate-mapping>

User.hbm.xml

package com.chris.test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.collections.map.HashedMap;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.chris.pojo.User;
import com.chris.util.HibernateUtil;

public class TestCollection {
    @Test
    public void testListAdd(){
        User user=new User();
        List<String> address=new ArrayList<String>();
        address.add("忠孝东路EEQQAA");
        address.add("剩男天桥EEQQAA");
        address.add("华育网科技EEQQAA");
        user.setAddress_list(address);
        Session session=HibernateUtil.getSession();
        Transaction tr=session.beginTransaction();
        session.save(user);
        tr.commit();
        session.close();
    }
    @Test
    public void testSetAdd(){
        User user=new User();
        Set<String> address2=new HashSet<String>();
        address2.add("忠孝东路EEQQAA");
        address2.add("剩男天桥EEQQAA");
        address2.add("华育网科技EEQQAA");
        user.setAddress_set(address2);
        Session session=HibernateUtil.getSession();
        Transaction tr=session.beginTransaction();
        session.save(user);
        tr.commit();
        session.close();
    }
}

TestCollection.java

package com.chris.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    public static SessionFactory sf=null;
    static{
        Configuration  cf=new Configuration().configure();
        sf=cf.buildSessionFactory();
    }

    public static Session getSession(){
        return sf.openSession();
    }

}

HibernateUtil.java

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="foo">
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql:///hibernate_20120328</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="hibernate.connection.password">hyy</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">false</property>
        <!--
            create:先删除,再创建
            update:如果表不存在就创建,不一样就更新,一样就什么都不做。
            create-drop:初始化时创建表,SessionFactory执行close()时删除表。
            validate:验证表结构是否一致,如果不一致,就抛异常。
         -->
        <property name="hbm2ddl.auto">update</property>
        <!--
            设置默认的事务隔离级别:
            隔离级别        对应的整数表示
            READ UNCOMMITED    1
            READ COMMITED    2
            REPEATABLE READ    4
            SERIALIZEABLE    8
         -->
        <property name="connection.isolation">2</property>

    <mapping resource="com/chris/pojo/User.hbm.xml" />

</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

时间: 2024-10-19 15:22:41

hibernate之List&Set批量插入的相关文章

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工作所需,我经常要写些程序批量处理数据,每次执行几十万数据处理的时候,我机子的CPU都会飙高,而且数据处理速度会越来越慢.比如第一个1W条要5分钟,第二个1W条就要10分钟,要干其他事情的时候机子也卡的不行,只能等着处理完数据. 其实我一直认为是数据量太大,从来不认为是程序问题,所以一直没怎么关注过.

Hibernate的批量插入(&amp;&amp;JDBC)

一.批量插入(两种方式) 1,通过hibernate缓存 如果这样写代码进行批量插入(初始设想): package com.anlw.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import or

Hibernate(十三)命名查询-批量处理和调用存储过程

一.命名查询 HQL语句混杂在代码之间将破坏代码的可读性 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式称为命名查询 二.建立数据表和持久化类 建立数据表 create table login ( username varchar2(32) primary key, password varchar2(32) not null , age number(3) ); insert into login select '张三','123456',21 from dual

ibatis、hiberate之批量插入

ibatis批量插入 首先dao层要传递一个list过来,比如是一个user(list数据) 接着xml文件中这么配置,注意类型是"java.util.List, <insert id="insert" parameterClass="java.util.List"> insert into user(acount,pwd) <iterate conjunction=","> (#user[].acount#,#

JPA中以HibernatePersistence为provider的批量插入问题

为什么要批量插入 要插入10000条数据,如果不批量插入的话,那么我们执行的sql语句将是10000条insert insert into member (group_id, user_id, role, extend) values (101, 100, 3, NULL)insert into member (group_id, user_id, role, extend) values (101, 101, 3, NULL)insert into member (group_id, user

mysql使用存储过程&amp;函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...废话不多说,我就直接上表结构啦哈,如下: create table dept( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default "",

spring JdbcTemplate批量插入以及单个插入时获取id

1. 批量更新插入 jdbcTemplate.batchUpdate(String sql, List<Object[]> batchArgs) Object[]数组的长度为每条记录的参数个数(也就是sql语句中"?"的个数) List: 总共插入多少条记录. /** * 批量插入订单详情 * */ public void addBatch(List<OrderDetail> orderDetails) { List<Object[]> params

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

SQL表值参数批量插入

--使用表值参数向另一数据表中批量插入数据 USE DF17DataPro--创建并使用表值参数步骤/*1.创建表类型并定义表结构.有关如何创建 SQL Server 类型的信息,请参阅用户定义表类型.有关如何定义表结构的详细信息,请参阅 CREATE TABLE (Transact-SQL).2.声明具有表类型参数的例程.有关 SQL Server 例程的详细信息,请参阅 CREATE PROCEDURE (Transact-SQL) 和 CREATE FUNCTION (Transact-S