hibernate如何根据需要创建新表
我有一个需求,当一个用户注册的时候,我需要为这个用户创建一个新表来存放与这个用户相关的信息。如何使用hibernate实现呢?我想了很久都没有结果,请高手帮忙!谢谢!问题...
我有一个需求,当一个用户注册的时候,我需要为这个用户创建一个新表来存放与这个用户相关的信息。如何使用hibernate实现呢?我想了很久都没有结果,请高手帮忙!谢谢!问题解决了再加分。
我的需求是这样的,我需要在网站上保存每个用户的消费信息,如果把所有人的消费信息都放在一张表里的话,那么表的容量会很大,不方便管理,同时,当在线用户人数太多的时候会很慢,没法对表进行并发操作,我需要为每个用户创建一个消费信息表来存储每个用户的消费信息。请问高手,这样的需求应该如何解决? 展开
我的需求是这样的,我需要在网站上保存每个用户的消费信息,如果把所有人的消费信息都放在一张表里的话,那么表的容量会很大,不方便管理,同时,当在线用户人数太多的时候会很慢,没法对表进行并发操作,我需要为每个用户创建一个消费信息表来存储每个用户的消费信息。请问高手,这样的需求应该如何解决? 展开
推荐于2017-09-19 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464988
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
方案一 :
在hibernate.cfg.xml中添加:
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
value的值可选项如下:
* validate 加载hibernate时,验证创建数据库表结构
* create 每次加载hibernate,重新创建数据库表结构。
* create-drop 加载hibernate时创建,退出是删除表结构
* update 加载hibernate自动更新数据库结构
方案二 :
用自动生成代码后,在/src下面有一个jdbc.properties文件,这里加一句hibernate.hbm2ddl.auto=update。值的可选项同上。
在hibernate.cfg.xml中添加:
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
value的值可选项如下:
* validate 加载hibernate时,验证创建数据库表结构
* create 每次加载hibernate,重新创建数据库表结构。
* create-drop 加载hibernate时创建,退出是删除表结构
* update 加载hibernate自动更新数据库结构
方案二 :
用自动生成代码后,在/src下面有一个jdbc.properties文件,这里加一句hibernate.hbm2ddl.auto=update。值的可选项同上。
展开全部
那就不能使用Hibernate的ORM特点了,只能自己用SQL实现,Hibernate也可以支持直接SQL语言操作。
不过,为每个用户创建一张表,这本来就很不合理,非常难以管理,当用户数成千上万时,就会有成千上万的表,数据库就不能支持这么多的表,性能会很低。但数据表里有上百万条的记录,数据库还是很轻松应付,所以不应该通过无限增加表的数量来实现,而是修改表结构,在有限的表里更高性能的存储更多用户数据。
如果用户数很多,而且每条记录的列数很多,应该是考虑表的横行切割(一部分记录行放在一个表,另一部分的记录行放在另一个表,减轻记录行太多,而引起的表负担)或纵切割(记录行里的一部分列放在一个表,另一部分的列放在另一个表,减轻一条记录太大,而引起的表负担),或是这两种的混合。
还有比较简单的方式,通过修改范式设计(例如通过一对一关键关联,把用户的数据分别放在两个表里),实现更高性能的数据存放
不过,为每个用户创建一张表,这本来就很不合理,非常难以管理,当用户数成千上万时,就会有成千上万的表,数据库就不能支持这么多的表,性能会很低。但数据表里有上百万条的记录,数据库还是很轻松应付,所以不应该通过无限增加表的数量来实现,而是修改表结构,在有限的表里更高性能的存储更多用户数据。
如果用户数很多,而且每条记录的列数很多,应该是考虑表的横行切割(一部分记录行放在一个表,另一部分的记录行放在另一个表,减轻记录行太多,而引起的表负担)或纵切割(记录行里的一部分列放在一个表,另一部分的列放在另一个表,减轻一条记录太大,而引起的表负担),或是这两种的混合。
还有比较简单的方式,通过修改范式设计(例如通过一对一关键关联,把用户的数据分别放在两个表里),实现更高性能的数据存放
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每个用户创建一张表?天啊,这个需求下来,数据库会疯的……
我不知道楼主原本的需求是不是单独为这个用户保存一套数据,比如地址,电话,邮编等详细信息。如果是这样,建议楼主建两张表即可,类似
User和UserDetail表,然后再UserDetail表中有一个字段保存User的主键ID,这样就可以查询了。
如果楼主非要创建表的话,hibernate支持原声sql语句,楼主可以试一下。
session.createSqlQuery(); //貌似是这个方法吧。这个方法是传入SQL语句而不是HQL语句的。
我不知道楼主原本的需求是不是单独为这个用户保存一套数据,比如地址,电话,邮编等详细信息。如果是这样,建议楼主建两张表即可,类似
User和UserDetail表,然后再UserDetail表中有一个字段保存User的主键ID,这样就可以查询了。
如果楼主非要创建表的话,hibernate支持原声sql语句,楼主可以试一下。
session.createSqlQuery(); //貌似是这个方法吧。这个方法是传入SQL语句而不是HQL语句的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
难道不是先把表建好先的?用sql语句建呗~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hibernate的session可以返回connection对象用于执行jdbc来创建表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询