最近因为业务需求,需要对同一张数据表进行分割,比如user表,要分为user1,user2,user3...N张表,访问的路由规则也可以实现,但是因为系统ORM框架采用Hibernate,不知道能不能实现动态印射。

解决方案 »

  1.   

    举一个例子,以车为例:
    <hibernate-mapping>
        <class name="com.honglin.Car" table="car_old" entity-name="oldOrder">
            <id name="cId" type="long">
                <generator class="increment"/>  
            </id>
            <property name="carName" type="String"/>
        </class>    <class name="com.honglin.Car" table="car_new" entity-name="newOrder">
            <id name="cId" type="long">
                <generator class="increment"/>  
            </id>
            <property name="carName" type="String"/>
        </class>
    </hibernate-mapping>
      

  2.   

    我不是很明白你的意思,是动态模式吗?不知道你用的是不是Hibernate 3,Hibernate 3有动态模式
    表代码:CREATE TABLE user (
        id INT(11) NOT NULL auto_increment PRIMARY KEY,
        name VARCHAR(100) NOT NULL default '',
        age INT
    );xml配置,不需要定义java类,可以直接映射到<class>标签上,用entity-name属性!!<?xml version="1.0" encoding="utf-8"?> 
    <!DOCTYPE hibernate-mapping 
        PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> 
        <class entity-name="onlyfun.caterpillar.DynamicUserModel" 
               table="user"> 
            <id name="id" column="id" type="java.lang.Integer"> 
                <generator class="native"/> 
            </id> 
            <property name="name" 
                      column="name" 
                      type="java.lang.String"/>        
            <property name="age" 
                      column="age" 
                      type="java.lang.Integer"/>         
        </class> 
    </hibernate-mapping>entity-name设定的值,再下面使用
    java代码:保存
    Map userMap = new HashMap();
    userMap.put("name", "caterpillar");
    userMap.put("age", new Integer(30));
            
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.save("onlyfun.caterpillar.DynamicUserModel", userMap);
    tx.commit();        
    session.close();载入资料Session session = sessionFactory.openSession();
    Map userMap = (Map) session.load("onlyfun.caterpillar.DynamicUserModel", new Integer(1));
    System.out.println(userMap.get("name"));
    System.out.println(userMap.get("age"));
    session.close();
      

  3.   

    楼主  我加了entity-name的哦,看清楚点哦,不只是name
      

  4.   

    你google一下一个持久化类对应多张表就知道我那样行不行了