hibernate动态创建数据库表名几种方式

数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间。

答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式。    完全可以在不创建表分区情况下实行分表管理 例如 日志记录表 将日期(yyyy-MM)作为默认表后缀动态追加, 例如 文章发布表 将用户名作为后缀名进行动态追加 ;  动态创建数据库表的方式要具体问题具体分析, 比如JDBC中直接使用create table 表名_dynamicStr(...);   文章发布系统 dynamicStr 可以用已注册登陆的用户名, 日志记录表 dynamicStr 可以采用 ‘log_‘+new SimpleDateFormat("yyyyMM").format(new Date());

下面例子是使用hibernate动态创建数据库表的例子, 如果有兴趣可以将下面的代码抽取成动态创建表的Utils.public class ReportDBApi {

  private SessionFactory sessionFactory = null;
  public ReportDBApi(){
    createSession();
  }

  public void createSession(){
    Date date = new Date();
    SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyyMMdd");
    String now_time = simpledateformat.format(date);
    String tablename = "TBL_REPORT_STATUS_20050707";
    tablename = "TBL_REPORT_STATUS_" + now_time;
    try {
      Configuration cfg = new Configuration().addClass(cn.sports.vas.sms.unicom.TblReportStatus.class).configure();

      Table table = cfg.getClassMapping(TblReportStatus.class).getTable();
      table.setName(tablename);
      cfg.getClassMapping(TblReportStatus.class).setTable(table);
      sessionFactory  = cfg.buildSessionFactory();
    }
    catch (MappingException ex) {
      ex.printStackTrace();
    }catch (HibernateException ex) {
      ex.printStackTrace();
    }
  }

  public void insertPO(TblReportStatus po) throws HibernateException {
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.save(po);
    tx.commit();
    session.close();
  }
  public void closeSession() throws HibernateException {
    sessionFactory.close();
  }
}

hibernate动态创建数据库表名几种方式,布布扣,bubuko.com

时间: 2024-10-17 04:09:31

hibernate动态创建数据库表名几种方式的相关文章

iReport+jasperreport创建子表的几种方式(1)

在制作报表的过程中,子表是必不可少的,今天就研究了一下制作子表的几种方式 一.连接数据库创建子表 以MySQL为例: 1)iReport 创建父表 这个就是创建一个新的表格,不过记得数据源要选择mySQL ,其他的数据库数据源也一样的. 2)创建好之后,我们来创建子表,在组件面板找到拖动到父表当中的任意一个地方,我是放到detail里面的 它会产生一个向导 一路next下去,只是在最后一项选择use empty datasource,不过选其他的也行,待会我们还要修改 3)说一下原理:这种方式就

Hibernate控制台显示创建数据库表语句

1 package cqvie.yjq.View; 2 3 import org.hibernate.Session; 4 import org.hibernate.Transaction; 5 import org.hibernate.cfg.AnnotationConfiguration; 6 import org.hibernate.tool.hbm2ddl.SchemaExport; 7 8 public class Test { 9 10 public static void main

Django中利用type动态操作数据库表

场景分析: 后台MySql数据库保存了一大批按股票代码命名的数据表,每张表保存的是每只股票的日线数据. stock_000002 stock_600030 stock_600020 ...一共3000多个表. Django中如果要按股票代码展示每张表的数据,利用常规ORM模型变得非常困难,因为有3000多个表,就需要建3000多个模型. 解决办法: 1. 根据表名.字段等动态创建ORM表模型 def create_model(name, fields=None, app_label='', mo

hibernate 自动生成数据库表

只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update</property> update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失.

Hibernate自动生成数据库表

在hibernate.cfg.xml中添加: 引用 <properties> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> value的值可选项如下: 引用 validate  加载hibernate时,验证创建数据库表结构 create  每次加载hibernate,重新创建数据库表结构. create-drop  加载hibern

通过Hibernate配置获取数据库表的具体信息

/** * 通过Hibernate配置获取数据库表的具体信息 * @author 晚风工作室 www.soservers.com * */ 标签: Hibernate [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5

使用sqlite3创建数据库表的时候需要注意

使用sqlite3创建数据库表的时候需要注意: 1. 不能使用纯数字 2. 不能带有"-","@"等字符.也不能以数字打头. 一.下面是log打出来的信息: DB Error: 1 "unrecognized token: "47464636265757265763393573649"" DB Query: INSERT INTO 47464636265757265763393573649(role,number,name)

使用sqlite3创建数据库表的时候须要注意

使用sqlite3创建数据库表的时候须要注意: 1. 不能使用纯数字 2. 不能带有"-","@"等字符.也不能以数字打头. 一.以下是log打出来的信息: DB Error: 1 "unrecognized token: "47464636265757265763393573649"" DB Query: INSERT INTO 47464636265757265763393573649(role,number,name)

django使用model创建数据库表使用的字段

Django通过model层不可以创建数据库,但可以创建数据库表,以下是创建表的字段以及表字段的参数.一.字段1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True.2.models.CharField 字符串字段 必须 max_length 参数3.models.BooleanField 布尔类型=tinyint(1) 不能为空,Blank=True4.