Hibernate逆向工程原理_java版本
2013-03-22 01:07
253 查看
之前在一篇"Hibernate 逆向工程生成POJO类和映射文件"文章中,一位朋友提出了这样的问题:
源地址:/article/4667476.html#2637768
这几天闲着没事儿,就想了一下hibernate的逆向工程的实现原理。
这是我个人构思的想法:
1.我们在数据库中建立一个我们自己的表;
如:
创建后的表结构如:
2,我们在数据库控制台用“desc person”可以查看person表的结构:
3.我们用代码实现这样的查询功能:
代码如下:
运行效果:
可以发现,运行出来的效果和我们在控制台运行的效果是一样的。所以我们可以用代码实现获取表结构,这一步尤为关键!!!
4.我们可以用代码获取表的结构,那么我们就可以知道一个表的所有信息,如:
表里面的所有字段,字段的类型,长度,是否为空,是否为主键....很多信息,我们可以提取其中有用的信息,我们只要在freemarker
或velocity模板引擎中创建好我们的模板这样打工就可以告成...
5.使用freemaker或者velocity模板引擎制作模板的时候,我想在生成表对应的实体类和xml配置文件的时候需要注意的是表与表的关联关系....
上面的观点都是Hongten个人的观点以及见解,如果有说的不好,或说错的地方,欢迎大家拍砖....
源地址:/article/4667476.html#2637768
这几天闲着没事儿,就想了一下hibernate的逆向工程的实现原理。
这是我个人构思的想法:
1.我们在数据库中建立一个我们自己的表;
如:
CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_bin NOT NULL, `age` int(11) DEFAULT NULL, `sex` varchar(2) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
创建后的表结构如:
2,我们在数据库控制台用“desc person”可以查看person表的结构:
3.我们用代码实现这样的查询功能:
代码如下:
/** * */ package com.b510; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * * @author hongten * @date 2013-3-22 */ public class JDBCTest { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String dbName = "spring"; String passwrod = "root"; String userName = "root"; String url = "jdbc:mysql://localhost:3308/" + dbName; String sql = "desc person"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, userName, passwrod); PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); System.out.println(" Field Type Null Key Default Extra"); while (rs.next()) { System.out.println("--------------------------------------------"); System.out.println(" "+rs.getString(1) +" "+ rs.getString(2) +" "+ rs.getString(3) +" "+ rs.getString(4) +" "+ rs.getString(5) +" "+ rs.getString(6) ); } // 关闭记录集 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } // 关闭声明 if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } // 关闭链接对象 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } }
运行效果:
可以发现,运行出来的效果和我们在控制台运行的效果是一样的。所以我们可以用代码实现获取表结构,这一步尤为关键!!!
4.我们可以用代码获取表的结构,那么我们就可以知道一个表的所有信息,如:
表里面的所有字段,字段的类型,长度,是否为空,是否为主键....很多信息,我们可以提取其中有用的信息,我们只要在freemarker
或velocity模板引擎中创建好我们的模板这样打工就可以告成...
5.使用freemaker或者velocity模板引擎制作模板的时候,我想在生成表对应的实体类和xml配置文件的时候需要注意的是表与表的关联关系....
上面的观点都是Hongten个人的观点以及见解,如果有说的不好,或说错的地方,欢迎大家拍砖....
相关文章推荐
- MyEclipse6.5利用Hibernate逆向工程生成映射文件出现oracle数据库版本不兼容解决
- 模仿Hibernate的逆向工程_java版_源码下载
- hibernate 逆向工程对数据库进行CRUD操作
- 逆向工程核心原理
- Hibernate逆向工程出现Generating Artifacts错误解决
- 利用Java Reflection(反射)原理,在hibernate里面实现对单表、视图的动态组合查询
- java工程积累——加密hibernate数据源连接符
- Hibernate反向工程—java.math.BigDecimal替换
- Hibernate基础之逆向工程
- eclipse下使用hibernate tools实现hibernate逆向工程
- 从 Java 代码逆向工程生成 UML 类图和序列图
- 00书逆向工程核心原理
- Hibernate从入门到上手(纯java project、Maven版本hibernate)
- eclipse 逆向工程生成hibernate实体类(注解或配置文件)
- 几个开发工具的java逆向工程(java reverse engineering)功能比较
- JAVA Hibernate工作原理及为什么要用
- 几个开发工具的java逆向工程(java reverse engineering)功能比较
- 转 Java-Swing嵌入浏览器(一) 今天要说的额是浏览器的第一个版本是用DJnative-swt和swt包开发的调用本地浏览器和webkit浏览器的示例 这是我的工程目录【源码见最后】: i
- java jdk1.7版本的HashMap原理解析
- Hibernate3.3以上版本报Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable异常