锁定老帖子 主题:利用Hibernate的配置反向生成数据库
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-19
利用Hibernate配置文件生成数据库
目前很多人使用Hibernate作为持久层,如果我们已经写了配置文件poweracl.hbm.xml,则不必再费劲写SQL的DDL。除了利用工具 SchemaExport之外,还可以编写程序来自动初始化数据库,并且生成SQL DDL。 1.Hibernate配置 文件hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <!--让hb在运行时显示实际执行的sql语句 --> <property name="show_sql">true</property> <!-- 使显示的sql格式化--> <property name="format_sql">true</property> <property name="connection.username">root</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibtest</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.password">netjava</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 指明user这个pojo类的映射文件的路径 --> <mapping resource="com/hibtest/poweracl.hbm.xml" />
</session-factory>
</hibernate-configuration>注意:(1)JDBC驱动为com.mysql.jdbc.Driver,可以根据所使用的库而更换。
2.数据库映射配置poweracl.hbm.xml
<?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 name="com.hibtest.user" table="user" discriminator-value="W"> <id name="loginname" type="string"> <column name="loginname" sql-type="char(16)" not-null="true"></column> <generator class="assigned"></generator> </id> <property name="password" type="string"> <column name="password" sql-type="varchar(20)"></column> </property> <property name="name" type="string"> <column name="name" sql-type="varchar(20)"></column> </property> <property name="email" type="string"> <column name="eamil" sql-type="varchar(60)"></column> </property> <property name="modified" type="date"> <column name="modifier"></column> </property> <property name="creater" type="date"> <column name="creater"></column> </property> <property name="lastlogin" type="date"> <column name="lastlogin"></column> </property> </class> </hibernate-mapping> 说明:具体的poweracl.hbm.xml要根据数据库表而设置,这里只是列举一个user表。
3.初始化数据库类package com.hibtest;
import java.io.File;
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;
/**//** * <p/> vedadou * Date: 2004-02-25 * Time: 9:40:15 */ public class InitDB { static Session session;
public static void main(String[] args){ Configuration config = null; Transaction tx = null; try { config = new Configuration().configure(new File("hibernate.cfg.xml")); System.out.println("Creating tables..."); SchemaExport schemaExport = new SchemaExport(config); schemaExport.create(true, true); System.out.println("Table created."); SessionFactory sessionFactory = config.buildSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); tx.commit();
} catch (HibernateException e){ e.printStackTrace(); try { tx.rollback(); } catch (HibernateException e1) { e1.printStackTrace(); } } finally {
} } <span style= 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2306 次