Hibernate 与数据库的关系是ORM关系,对象映射数据库。
那么如何通过对象对数据库进行各种对象的ddl与dml操作呢?
数据库对象操作的〈database-object ../〉+ SchemaExport
1、hibernate.cfg.xml
<?xml version="1.0" encoding="GBK"?> <!-- 指定Hibernate配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- hibernate- configuration是连接配置文件的根元素 --> <hibernate-configuration> <session-factory> 。。。。。。。。
<!-- 根据需要自动创建数据库:如果创建表,这里必须为create --> <property name="hbm2ddl.auto">create</property> <!-- 显示Hibernate持久化操作所生成的SQL --> <property name="show_sql">true</property> <!-- 将SQL脚本进行格式化后再输出 --> <property name="hibernate.format_sql">true</property> <!-- 罗列所有的映射文件 --> <mapping resource="。。。。。。/lovejk.hbm.xml"/> </session-factory> </hibernate-configuration>
2、lovejk.hbm.xml
<?xml version="1.0" encoding="gb2312"?> <!-- 指定Hiberante3映射文件的DTD信息 --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- hibernate-mapping是映射文件的根元素 --> <hibernate-mapping> <!-- 使用data-object元素定义数据库对象 --> <database-object> <!-- 定义创建数据库对象的语句 --> <create>create table testjk(name varchar(256));</create> <!-- 让drop元素为空,不删除任何对象 --> <drop></drop> <!-- 指定仅对MySQL数据库有效 --> <dialect-scope name="org.hibernate.dialect.MySQLDialect"/> <dialect-scope name="org.hibernate.dialect.MySQLInnoDBDialect"/> </database-object> </hibernate-mapping>
3、执行
public static void main(String[] args) throws Exception { //实例化Configuration,这行代码默认加载hibernate.cfg.xml文件 Configuration conf = new Configuration().configure(); //以Configuration创建SessionFactory SessionFactory sf = conf.buildSessionFactory(); // //创建SchemaExport对象 SchemaExport se = new SchemaExport(conf); // //设置输出格式良好的SQL脚本 se.setFormat(true); // //设置保存SQL脚本的文件名 se.setOutputFile("d:\\1.sql"); // //输出SQL脚本,并执行SQL脚本 se.create(true, true); sf.close(); }
总结:简单粗暴!