在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,依据hbm文件自己主动生成pojo和数据库脚本

     首先。我一定要吐槽下,这个Ant管理部署项目的工具。以及hibernate刚刚学习,导入我这一个简单的问题整了一天多。实在效率有点低下。

在这两天中,①了解了Ant。知道了在Ant中非常灵活的步骤项目的情况,知道了build.xml文件的一些基本写法。②还学习了在MyEclipse这种集成工具中完毕项目部署。

③以及在这两种情况中。利用hibernateTools中的hbm2java和hbm2ddl工具,依据对象关系映射文件,自己主动生成POJO以及SQL文件(就是数据表)。

一,在web项目中,利用这两个工具生成POJO和SQL

1。 项目的结构:

2,项目须要导入的jar包:

①freemarker.jar一定要导入进来。不然会报异常

②  hibernate-tools.jar。提供hbm2java和hbm2ddl工具,利用这两个工具,能够通过映射文件生成POJO和sql。

③log4j.jar

④mysql-connector-java.jar.利用别的数据库驱动也是能够的。

⑤slf4j相关的三个jar包最好全导入进来。相关的了解与学习,能够自己查官方文档。

⑥剩下的所有jar包,是hibernate中lib/required的所有jar。

3。hibernate初始化所用的配置

(配置文件方式,或者xml方式,两者都能够。可是通常选择xml更通用更方面)

在本demo中,这两个文件都用啦。详细看两个文件中面内容:

hibernate.properties(数据库相关信息)

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test
hibernate.connection.username=root
hibernate.connection.password=root
hibernate.show_sql=true
javax.persistence.validation.mode=none

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">

<hibernate-configuration>
	<session-factory>
		<!-- 提示生成SessionFactory实例所要载入的对象关系映射文件 -->
		<mapping resource="java/User.hbm.xml"/><!-- 特别提示,这里是映射文件的全然限定名 -->
		<mapping resource="java/Address.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

4,对象关系映射文件hbm.xml

hibernateTools中的两个工具,正是參照这两个文件生成POJO和SQL

User.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">
<hibernate-mapping package="java">
<!-- 特别注意这里,这里指示POJO对象所在的包,利用hbm2java生成POJO时,会在java文件头加一个package XXX; -->
	<class name="User" table="user" dynamic-insert="true" dynamic-update="true">

		<id name="userId" type="integer">
			<generator class="identity"/>
		</id>
		<property name="account" type="string" length="64"/>
		<property name="name" type="string" length="128"/>
		<property name="nickName" type="string" length="128"/>
		<property name="status" type="integer" length="1"/>
		<property name="phones" type="string" length="128"/>
		<property name="emails" type="string" length="128"/>

		<set name="addresses" table="address" inverse="true" cascade="all"
			sort="unsorted" order-by="zipcode asc">
			<key column="userId"/>
			<one-to-many class="Address"/>
		</set>
	</class>

</hibernate-mapping>

Address.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">
<hibernate-mapping package="java">
	<class name="Address" table="address" dynamic-insert="false"
		dynamic-update="false">
		<id name="addressId" type="integer">
			<generator class="identity"/>
		</id>
		<property name="country" type="string" length="128"/>
		<property name="city" type="string" length="128"/>
		<property name="zipcode" type="string" length="12"/>

		<many-to-one name="user" class="User" column="userId" cascade="none"
			outer-join="auto" update="true" insert="true" access="property"
			not-null="true"/>
	</class>

</hibernate-mapping>

5,build.xml文件

(这个文件是ant脚本,编写hbm2ddl和hbm2java任务,能够更灵活的的管理项目)

<?

xml version="1.0" encoding="UTF-8"?

>
<project name="hibernate" default="compile" basedir=".">
	<echo>===========================================================</echo>
	<echo>|                       Hibernate                         |</echo>
	<echo>===========================================================</echo>
	<property name="src" value="src">
	</property>
	<property name="src.java" value="src" /><!-- 注意这里源码包位置指定的是根位置,原因以下 -->
	<property name="src.conf" value="src/conf" />
	<property name="lib.dir" value="WebRoot/WEB-INF/lib" />
	<property name="classes.dir" value="WebRoot/WEB-INF/classes" />
	<property name="schema.dir" value="db"/> 

	<!--类路径-->
	<path id="classpath">
		<pathelement location="${classes.dir}" />
		<fileset dir="${lib.dir}">
			<include name="**/*.jar" />
		</fileset>
	</path>

	<!--准备文件夹-->
	<target name="prepare">
		<mkdir dir="${classes.dir}" />
	</target>

	<target name="prepare-shcema-dir">
			<mkdir dir="${schema.dir}" />
		</target>

	<!--删除文件夹,用于又一次编译-->
	<target name="clean" description="删除全部编译后的文件">
		<delete dir="${classes.dir}" />
	</target>

	<!-- 编译src.java中的源文件 -->
	<target name="compile.java" depends="prepare" description="编译java源码">
		<javac srcdir="${src.java}" destdir="${classes.dir}" debug="on">
			<classpath refid="classpath" />
		</javac>
		<copy todir="${classes.dir}">
			<fileset dir="${src.conf}">
				<include name="**/*" />
			</fileset>
			<fileset dir="${src.java}">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
	</target>

	<!-- 编译全部的源文件(src.java) -->
	<target name="compile" depends="compile.java" />

	<!-- create .java form  *.hbm.xml -->
	<target name="hbm2java" depends="compile" description="Generate Java source from the O/R mapping files">
		<taskdef name="hbm2java" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="classpath" />
		<hbm2java destdir="${src.java}">
			<!-- 特别注意:destdir指生成的源码放在${src.java}文件夹也就是src下,而为何不直接指定在src/java下呢?-->
			<!--经測试,发现利用hbm2java通过对象关系映射文件生成POJO时,指定的package属性会在POJO中加上文件所在包,也就是package XXX;-->
			<!--假设不指定这个package属性时,则不会加上package XXX;可是事一定要把POJO放于某个包下,所以这里的package一定要指定;  -->
			<!--也因此,在这里src.java指定的值仅仅能是src根文件夹,不然指定的话会反复了包,生成的POJO会在错误的相似AA/AA反复层名的包下  -->
			<configuration configurationfile="${classes.dir}/hibernate.cfg.xml" />
			<!--生成java类-->
			<hbm2java />
		</hbm2java>
	</target>

	<!-- create ddl form  *.hbm.xml -->
	<target name="hbm2ddl" depends="prepare-shcema-dir" description="Generate DB schema from the O/R mapping files">
		<taskdef name="hbm2ddl" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="classpath" />
		<hbm2ddl destdir="${schema.dir}">
			<configuration configurationfile="${classes.dir}/hibernate.cfg.xml" />
			<!--export="true"创建数据库schema export="false"生成sql文件-->
			<hbm2ddl export="true" console="true" create="true" update="false" drop="false" outputfilename="db.sql" />
		</hbm2ddl>
	</target>

</project>

6。执行的过程图

7,执行的结果图:

如上图。POJO和SQL都已经成功生成。

------------------------------------------------------------------------------------------------------------------------------------------

在此特别感谢别的前辈的分享,从他的分享以及我的摸索中。让我知道了怎样在一个web项目中利用hibernateTools

的两个工具生成须要的东西。当然这仅仅是入了门,提升还须要兴许的学习与实践

------------------------------------------------------------------------------------------------------------------------------------------

二,在java项目中,利用这两个工具生成POJO和SQL

这个方面。前面一篇博文中已经转载。

注意事项几乎相同,仅仅是个别细节的配置须要注意。在此不反复。

时间: 2024-08-02 06:59:33

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,依据hbm文件自己主动生成pojo和数据库脚本的相关文章

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本

     首先,我一定要吐槽下,这个Ant管理部署项目的工具,以及hibernate刚刚学习,导入我这一个简单的问题整了一天多,实在效率有点低下.在这两天中,①了解了Ant,知道了在Ant中很灵活的步骤项目的情况,知道了build.xml文件的一些基本写法.②还学习了在MyEclipse这样的集成工具中完成项目部署.③以及在这两种情况中,利用hibernateTools中的hbm2java和hbm2ddl工具,根据对象关系映射文件,自动生成POJO以及SQL文件(就是数据表). 一,在web项目

项目总结50:Linux服务器上web项目Java项目性能调优

项目总结50:Linux服务器上web项目Java项目性能调优 最近上线的电商项目,发现非常卡,用户体验非常差,折腾了好久之后,也逐渐找到原因,并针对原因解决方案,先整理总结. 项目基本情况: 1-使用阿里ECS.OSS等一系列相关服务: 2-用户总量1W+,日活量500+ 3-电商项目,有APP.小程序.管理平台三个模块,其中接口150+ 4-项目使用SSM框架: 5-项目tomcat服务,数据库Mysql,Redis放在一个同一个服务器上: 问题表现: 1-接口反应非常慢,导致APP和小程序

Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类

一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3.6)版 添加如下地址:http://download.jboss.org/jbosstools/updates/stable/helios/ 选择性安装:hibernate tools在All Jboss tools节点下面 eclipse indigo(3.7)版 添加如下地址:http://downl

关于Hibernate中hbm2java和hbm2ddl工具

hbm2java:根据映射文件自动生成java源文件 hbm2ddl:根据映射文件自动生成数据库的schema XDoclet:根据带有XDoclet标记的java源文件生成映射文件 Middlegen:根据数据库Schema自动生成映射文件 相关文件位置: 关于hbm2ddl工具的命令选项 hbm2ddl工具不仅需要读取xml映射文件还需要读取class的相关类文件

Myeclipse更改web工程的项目名

在java的web工程中,我们想更改项目名,常常发现改完项目名之后部署在服务器的名字还是原来的项目名称,这时我们需要做的是:项目名右键--->Properties-->MyEclipse-->Web-->WebContext root,就可以更改成功了.

记录-项目java项目框架搭建的一些问题(maven+spring+springmvc+mybatis)

伴随着项目框架的落成后,本以为启动就能成功的,but.... 项目启动开始报错误1:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 这个错百度到说是缺少这个包,但实际在项目中看到maven里面是有这个包的.于是继续百度到[可能包是找到了,但没有依赖在项目中] 项目右击-----project-----deployment assembly , add ,java bui

MyEclipse2014 普通的java项目换成web项目

从SVN中,导出的项目,导入到MyEclipse,显示是Java项目,如下图所示 将其变成web项目的方法,如下图所示

创建第一个java项目(初学者进) 想了解更多关于java的知识吗?关注我,不定时更新!

语言:java 开发平台:myeclipse 1:搭建一个java 项目 2: 点击左上角file→Java Project Project 是项目名称,Location 是项目存放地址,接下来点Finish,一个java项目就创建好了. 创建后的java项目 如图: 3:之后右键src→New→Packge 创建一个包,包用来存储各种分类的java类. 包的命名规范:国家.公司名.项目名.分层 在此初学java的同学可以不用包的命名规范,在以后学习分成后再注重包的命名规范. 4:创建好包后,右

转:如何将 Java 项目转换成 Maven 项目

如何将 Java 项目转换成 Maven 项目 本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确方便.它带给你直观的方便是:你不用在网上找 Jar 包,然后把它复制到 lib 目录,再在项目中引用它.而只需向 pom.xml 写入你需要的 Jar 包依赖,Maven 就能自动从本地仓库或远程仓库下载,并引用-- 如何将一般的 Java 项目转换成