网络地址:
主题:如何根据hibernate的实体类和实体类配置文件生成数据库的表
内容部分
[c-sharp]view plaincopyprint?
1.<!DOCTYPE hibernate-configuration PUBLIC
2. "-//Hibernate/Hibernate Configuration DTD
3.0//EN"
3. "/hibernate-configuration-3.0.dtd">
4.<hibernate-configuration>
5. <session-factory>
6. <property name="hibernate.connection.url">jdbc:mysql://12
7.0.0.1/lianxi</property
>
7. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prope
rty>
8. <property name="ername">root</property>
9. <property name="hibernate.connection.password">root</property>
10. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</propert
y>
11. <property name="hibernate.show_sql">true</property>
12. <property name="hibernate.hbm2ddl.auto">update</property>
13.
14. <mapping resource="com/bjsxt/crm/model/User.hbm.xml"/>
15. <mapping resource="com/bjsxt/crm/model/ContactPerson.hbm.xml"/>
16. <mapping resource="com/bjsxt/crm/model/Customer.hbm.xml"/>
17. <mapping resource="com/bjsxt/crm/model/DataDictionary.hbm.xml"/>
18. </session-factory>
19.</hibernate-configuration>
上面是hibernate.cfg.xml 的配置,需要注意的就是把实体映射类的配置文件都引用过来。
还有提点需要理解的是hibernate.hbm2dll.auto的配置:
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
在本机开发调试初始化数据的时候可以选择create、update等。
但是网站发布正式版本的时候,对数据库现有的数据或表结构进行自动的更新是很危险的。
此时此刻应该由DBA同志通过手工的方式进行后台的数据库操作。
hibernate.hbm2ddl.auto的值建议是“none”或“validate”。
“validate”应该是最好的选择:这样spring在加载之初,如果model层和数据库表结构不同,就会报错,这样有助于技术运维预先发现问题。
有了自己的实体类和相应的映射文件后,就可可以通过下面的这个方法由实体类生成数据库的表了,代买如下;
[java]view plaincopyprint?
1.import org.hibernate.cfg.Configuration;
2.import org.hibernate.tool.hbm2ddl.SchemaExport;
3.public class ExportDB {
4. public static void main(String[] args) {
5.
6. //读取hibernate.cfg.xml文件
7. Configuration cfg = new Configuration().configure();
8.
9. SchemaExport export = new SchemaExport(cfg);
10.
11. export.create(true, true);
12. }
13.}
下面是一些数据库方言,在这里列出方便查找使用
//参照表。