概述:
在本教程中,我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目,并且开始时有超过5个以上的表,则可能会发现此插件是自动生成映射域对象java文件和相应* .hbm.xml的绝佳工具文件容易。 您可以在项目中轻松使用它们。 对于具有2个或3个表的非常小的项目,您可能需要手动创建这些文件,但是,如果一个表或多个表中有大量字段要处理,则此工具是节省时间和节省时间的工具。
使用的工具:
1.针对Web开发人员的Eclipse Indigo Java EE IDE
2.休眠3
3. Hibernate Tools Eclipse插件版本3.5.1 4. Mysql JDBC jar(mysql-connector-java-5.1.23)
步骤-1:为Eclipse安装Hibernate插件
根据您的Eclipse版本从jboss站点安装hibernate插件。 我使用了Eclipse Indigo版本。 在Eclipse的菜单栏中,转到“帮助”->“安装新软件”,对于Indigo,转到http://download.jboss.org/jbosstools/updates/indigo/下载Hibernate插件并进行安装。
安装完成后,您将在“已安装的软件”部分中找到它,并在Eclipse中看到新的视角。
Hibernate的Eclipse透视图-
步骤2:配置插件以连接到数据库以生成代码
例如,我已经创建了一个动态Web应用程序PersonalPhotoAlbumApp,并已在其中复制了所需的jar文件到WEB-INF / lib文件夹中。 如果您有其他项目,则可以将jar(与Hibernet相关的必需jar文件和mysql连接器jar)保存在项目文件夹或外部文件夹中,但请记住,它应该位于公认的类路径中。
创建项目后,切换到Hibernate透视图。 然后转到File-> New->'Hibernate Console Configuration'。 稍后,您的插件将需要此控制台配置,以便基于数据库表映射生成代码。
单击“设置”按钮以创建一个新的hibernate.cfg.xml文件,该文件将存储您的数据库连接信息以供插件使用。 要生成域对象或hbm文件,不需要hibernate.cfg.xml文件,因为您可以从下拉列表中选择其他数据库配置。 为简单起见,我遵循了这一步骤。
选择名称和路径以将hibernate.cfg.xml文件存储在Java / J2EE项目中。 填写所需的连接信息以连接到数据库。
如果一切正常,您将在下面看到以下屏幕,您可以看到表格。 我的数据库“ tctalk_apps_photoalbum”中有两个表,分别是“相册”和“ phototbl”,您可以看到该工具正在显示。 如果在连接数据库时遇到任何错误,请检查* .cfg.xml文件,以查看是否有错误或键入您填写的信息。
步骤3:创建休眠反向工程配置文件
遵循在您的项目中创建reveng.xml的步骤,这将帮助该工具进行反向工程以生成域Java对象(POJO类)和相应的* .hbm.xml文件(此文件存储表字段以及与这些字段的必需映射) POJO)。
如果在左侧面板中看不到数据库架构和表,请单击“刷新”。 选择您要生成域代码的表,然后单击“包括”以在右侧面板中添加。
步骤4:创建休眠代码生成配置
此配置将使用reveng.xml生成域对象/ POJO和* .hbm.xml文件的Java代码,并将保留在您要标识的输出文件夹中。 请遵循以下步骤。
单击工具栏中的特定于休眠的微小运行图标,以从菜单中选择“休眠代码生成配置”选项。
选择“新启动配置”以创建一个新的。 该图标非常小,带有“ +”符号。
您需要选择要在其中生成域POJO java类以及* .hbm.xml文件的软件包。 还要选择您在上一步中创建的reveng.xml。
单击“主”旁边的下一个选项卡“导出器”,以选中“域代码”和“休眠XML映射(.hbm.xml)”复选框。
单击“运行”,您可以在状态栏中看到它正在运行。
步骤5(可选步骤):分离出POJO类和hbm文件以实现更好的可维护性
以下步骤是可选的。 此步骤只是为了美化项目文件夹和程序包的结构,以实现更好的可维护性。 如果对同一文件夹中的POJO和hbm文件没有问题,则可以跳过此步骤,直接转到步骤6,然后开始进行愉快的编码。 如果您认为需要为Java POJO类保留不同的程序包,并为* .hbm.xml文件保留单独的文件夹,请执行此步骤。
打开选择为输出文件夹的软件包,您将看到自动生成的类和hbm xml文件。
选择所有Java POJO类,然后右键单击并选择Refactor-> Move以将它们移至所需的包。 在我们的案例中,我希望它们位于businessobjects包中,因此将它们移到那里。
移动Java类后,我选择了每个类并重命名了它们以附加BO,以将它们标记为业务对象类。
由于hbm文件位于不同的程序包中,而java业务对象类位于不同的文件夹中,因此hibernate需要知道这一点。 否则它将找不到它们。 为此,我们需要在hibernate.cfg.xml文件中添加与每个POJO类及其对应的hbm.xml文件相对应的标记。
还打开* .hbm.xml文件,并使用类的完整程序包名称更改。 对于AlbumBO类,我将Album.hbm.xml文件中的类路径更改为
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Apr 22, 2013 1:26:40 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.tctalk.apps.album.db.businessobjects.AlbumBO" table="album" catalog="tctalk_apps_photoalbum">
<id name="albumid" type="java.lang.Integer">
<column name="albumid" />
<generator class="identity" />
</id>
<property name="albumname" type="string">
<column name="albumname" length="55" not-null="true" />
</property>
<property name="albumdesc" type="string">
<column name="albumdesc" length="65535" not-null="true" />
</property>
<property name="albumcreatedate" type="date">
<column name="albumcreatedate" length="10" not-null="true" />
</property>
</class>
</hibernate-mapping>