Hibernate映射实体类自动导入方法

  使用MyEclipse来开发Hibernate项目,这里是使用先写数据表用工具生成映射和实体类(第二章2.2)的方式,数据库使用的是mysql5。


3.1 通过MyEclipse中的Database Explorer来连接和管理数据库

         展开MyEclipse的内置工具,选择MyEclipse Database Explorer



        右击DB Browser中的空白区域,创建一个数据库连接项



        选择Driver template,由于我们要连接的是mysql数据库,所以选择 MySQL Connector/J。Driver name可以随便写,这是你的连接的名称,就像右边的MyEclipse Derby和mysql这样的名字一样。再下面三个就是我们连接数据库必须的参数了url、username、password,这些地球人都知道。

        再接下来就是加入mysql的连接jar包,通过Add JARs导进来。加进来后,可以点击Test Driver测试是否可以连接你的数据库了。如果不能连接,看你的参数有没有设置对了或者是jar包有没有与数据库的版本相符合。

        如果都没问题,按finish确定就可以了。那你就可以在右边DB Browser中看到与Driver name匹配的一个连接项了。


3.2 通过给项目加入Hibernate的功能

右击项目->MyEclipse->AddHibnernate Capabilities



选择Hibernate的版本,我们使用的是3.3。然后加入Hibernate的jar包。这里可以随便选,因为我们之后还是要移除掉的,因为我们只需要Hibernate的功能。jar包我们是使用我们自己经常使用的jar包,不需要MyEclipse提供的jar。因为工具是不会识别jar包是否会冲突。

最下面是说把MyElipse提供的jar包放置的位置。



设置hibenate配置文件的名字及配置文件在工程中的位置。



选择数据库的连接方式JDBC。DB Driver是选择我们刚才3.1设置好的数据库连接。

Dialect是选择Hibernate与mysql对话时候的方言。



        是否通过工具生成一个SessionFactory类。一般我们不需要,我们自己手动去创建就是了,没两句代码。

        接着按finish就完成了hibernate功能的导入。



3.3通过Database Explorer 将数据库中的表生成实体类与*.hbm.xml文件


       双击刚才设置好的连接项,连接你设定的数据库。选择数据库(test),展开数据库中所有的表(TABLE),然后右击我们要生成实体类与映射文件的表,选择Hibernate Reverse Engineening。



        第一项中,Java src folder选择你的项目的源代码目录。Java package 生成的实体类及映射文件存放的目录

        第二项是创建实体类与数据表间的映射关系。第一个功能是创建一个*.hbm.xml映射文件给我们选中的表。第二个功能是为实体类标上注解,形成映射,这是不需要*.hbm.xml文件的。两个功能只能选一个。

        第三项是根据表创建一个实体类,一般我们不需要实体类的抽象类。




        选择id生成策略,这里我们选native,由数据库底层决定策略。然后finish就可以了。



        生成的实体类与映射文件如下:



3.4 现在可以继续我们的hibernate之旅了

已标记关键词 清除标记
private static void printTableMetaInfo(Session session) { Connection connection = session.connection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet result = metaData.getColumns(null, null, NameOfTable, null); String strInJava = ""; String typeInJava; while (result.next()) { String columnName = result.getString(4); if ("stampTime".equalsIgnoreCase(columnName)) { continue; } int columnType = result.getInt(5); String nameFirstLetterLower = columnName.substring(0, 1).toLowerCase() + columnName.substring(1); switch (columnType) { case Types.VARCHAR: case Types.LONGVARCHAR: case Types.LONGNVARCHAR: case Types.NVARCHAR: case Types.CHAR: typeInJava = "String"; break; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: typeInJava = useInteger ? "Integer" : "int"; break; case Types.TIMESTAMP: case Types.BINARY: typeInJava = "Calendar"; break; case Types.DECIMAL: typeInJava = "BigDecimal"; break; case Types.BIGINT: typeInJava = "BigInteger"; break; case Types.LONGVARBINARY: typeInJava = "byte[]"; break; case Types.DATE: typeInJava = "Calendar"; break; default: throw new Exception("Unknown type " + columnType + " and column is " + columnName); } strInJava += " private " + typeInJava + " " + nameFirstLetterLower + ";\n"; // strInHibernate += "<property name=\"" + nameFirstLetterLower + "\" column=\"" + columnName + "\"/>\n"; } String str = "import javax.persistence.Entity;\n" + "import javax.persistence.Id;\n" + "import javax.persistence.Table;\n" + "import java.util.Calendar;\n\n"; str += "@Entity\n"; str += "@Table(name=\"$\")\n".replace("$", NameOfTable); str += "public class $ {\n".replace("$", NameOfTable.substring(2)); str += "\n @Id\n"; str += strInJava; str += "}"; System.out.println(str); StringSelection stringSelection = new StringSelection(str); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); } catch (Exception e) { e.printStackTrace(); }
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页