Hibernate ORM入门04
2016-02-24 09:06
429 查看
转自博客园:http://www.cnblogs.com/yjmyzz/archive/2012/12/26/2834037.html
相对微软的linq-to-sql或EF框架而言,"Hibernate对于eclipse的集成开发“ 新手并不容易掌握,下面是新手上路的步骤:
一、准备工作:
1、先下载eclipse (官网 http://eclipse.org/)
注:如本机已经安装了eclipse,可跳过
2、下载Hibernate 最新版本(目前已经到了4.X版本) (官网 http://hibernate.org/ )
3、根据你的db使用情况,下载对应的jdbc驱动包(本文使用的是oracle,本机安装完oracle client后就能找到)
4、下载commons-logging.jar包(Hibernate内部记录日志用的是它) (官网 http://commons.apache.org/logging/ )
5、在数据库里先创建一个测试表TMP_EMP (虽然Hibernate推荐 先设计DomainModel->再持久化到db,但是实际开发中,往往是先有表结构,再开始写代码的,所以还是以大多数人习惯的方式为准)
6、安装Hibernate Tools 插件(理论上讲,这一步可以不用,但是没这个插件,就只能纯手动编写各种hibernate配置xml了)
启用eclipse后,如果File->New 能找到Hibernate的相关选项,说明你的机器已经安装好了Hibernate Tools,可跳过本步骤
否则,Help->Eclipse Marketplace
Find栏输入Hibernate,就能联网找到相关的下载地址:
二、创建一个常规的java project,命名为HelloHibernate
创建过程中,注意导入所需的jar包,这些jar包可分为三大类:Hibernate解压目录中lib\required下的jar包、jdbc数据库驱动包、common-logging.jar日志工具包
三、创建Hibernate配置文件(hibernate.cfg.xml)
如果之前没有配置过其它db连接,可以点击Get Values from Connection,创建一个连接
设置相关的参数,如果没问题的话,可以点击Test Connection测试下参数是否正常
把这个连接,命名myConn后保存,这时再点击"Get Values from Connection",在弹出的对话框里,就能看到刚才创建的连接myConn
其实这一系列操作,无非就是为了让ide帮我们生成下面这份xml:
里面记录了数据库连接的一些关键信息,所以hibernate运行时,就能根据这些信息,知道如何去连接db,以及如何生成sql.
弄好这一步后,还可以在Hibernate Configurations面板里验证一下db连接是否正常,参考下图:Window->Show View->Other
输入hiber,应该就能自动过滤出想要的记录,选中Hibernate Configurations
然后在eclipse里,就能找到这个面板,展开Database,如果一切顺利,应该能自动列出相应的表名
四、创建反向工程配置文件(hibernate.reveng.xml),自动根据表结构,生成实体类
ORM中:通常一个表对应的就是一个类,如果所有类都要手动编写代码,要累死人的,幸好hibernate tools提供了"根据db表结构反向生成实体类"的功能
参考下图,创建一个 Hibernate Reverse Engineering File
参考下图,点击Refresh,先把所有表列出来,这里出于演示,我们只把测试表TMP_EMP包含进来(即只处理这一张表)
完成之后,可以看到还有其它很多选择,点击"Tables & Columns"
把TMP_EMP给Add进来
类似的,这些图形化的操作,其实就是要生成一段xml
该xml的内容,相当于db表结构的元数据,有了它,hibernate就能知道:每张表(及表里的每个字段)如何生成java中的类(及类的成员)
下面就让这些配置run起来,参考下图:(这个很坑,貌似在菜单里找不到,只能在工具栏里点击,而且还隐藏一个下拉菜单里)
注:如果工具栏里没有显示这个按钮,可以 window -> Customize Perspective,切换到Command Groups Availablity标签页,把Hibernate Code Generation给勾选上
这时,会弹出Hibernate的代码生成配置界面,比较重要的是:代码生成的输出目录(output directory),以及选择刚才创建的 reveng.xml(不选这个,hibernate就不知道要生成哪些表,以及生成的规则)
在Exporters面板里,通常我们只需要生成Domain Code(即:实体类),勾中
有时,生成java类后,eclipse不会自动刷新文件结构,建议下面这个也勾上
最后点击Run,顺利的话,就能看到新生成的java类
五、生成hibernate映射配置文件
刚才创建的反向工程配置文件,在运行时其实没多大作用,它只是用来告诉hiernate如何根据表结构生成java实体类,对于已经存在的java类(比如纯手写的),运行时,hibernate如何知道它对应于db中哪张表呢?答案还是配置文件,参考下图,创建Hibernate XML Mapping file(即hbm文件)
选择实体类所对应的包(或某个具体的类)
一路Next,直到完成,这样我们就得到了文件:TmpEmp.hbm.xml
这面就记录了每个java类与表之间的映射关系,最后一步配置相关的操作:
生成hbm文件后,hibernate如何知道去读这个文件呢?我们总得给hibernate一些提示吧,双击hibernate.cfg.xml文件,找到Mappings节点,如下图:
点击add,把刚才创建的TmpEmp.hbm.xml给添加进来
保存之后,你会发现,其实无非就是在hibernate.cfg.xml里,自动加了一行:
最后来玩一把:创建一个带main方法的类
这里只演示了最简单的查询,顺利的话,Console面板里,就应该有结果了(如下图)
注:Hibernate升级到4以后,原来的buildSessionFactory()方法在eclipse里会提示“过时”,最新4.3版hibernate下的正确写法为:
使用上述代码前,先import下面这几个package
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相对微软的linq-to-sql或EF框架而言,"Hibernate对于eclipse的集成开发“ 新手并不容易掌握,下面是新手上路的步骤:
一、准备工作:
1、先下载eclipse (官网 http://eclipse.org/)
注:如本机已经安装了eclipse,可跳过
2、下载Hibernate 最新版本(目前已经到了4.X版本) (官网 http://hibernate.org/ )
3、根据你的db使用情况,下载对应的jdbc驱动包(本文使用的是oracle,本机安装完oracle client后就能找到)
4、下载commons-logging.jar包(Hibernate内部记录日志用的是它) (官网 http://commons.apache.org/logging/ )
5、在数据库里先创建一个测试表TMP_EMP (虽然Hibernate推荐 先设计DomainModel->再持久化到db,但是实际开发中,往往是先有表结构,再开始写代码的,所以还是以大多数人习惯的方式为准)
启用eclipse后,如果File->New 能找到Hibernate的相关选项,说明你的机器已经安装好了Hibernate Tools,可跳过本步骤
否则,Help->Eclipse Marketplace
Find栏输入Hibernate,就能联网找到相关的下载地址:
二、创建一个常规的java project,命名为HelloHibernate
创建过程中,注意导入所需的jar包,这些jar包可分为三大类:Hibernate解压目录中lib\required下的jar包、jdbc数据库驱动包、common-logging.jar日志工具包
三、创建Hibernate配置文件(hibernate.cfg.xml)
如果之前没有配置过其它db连接,可以点击Get Values from Connection,创建一个连接
设置相关的参数,如果没问题的话,可以点击Test Connection测试下参数是否正常
把这个连接,命名myConn后保存,这时再点击"Get Values from Connection",在弹出的对话框里,就能看到刚才创建的连接myConn
其实这一系列操作,无非就是为了让ide帮我们生成下面这份xml:
弄好这一步后,还可以在Hibernate Configurations面板里验证一下db连接是否正常,参考下图:Window->Show View->Other
输入hiber,应该就能自动过滤出想要的记录,选中Hibernate Configurations
然后在eclipse里,就能找到这个面板,展开Database,如果一切顺利,应该能自动列出相应的表名
四、创建反向工程配置文件(hibernate.reveng.xml),自动根据表结构,生成实体类
ORM中:通常一个表对应的就是一个类,如果所有类都要手动编写代码,要累死人的,幸好hibernate tools提供了"根据db表结构反向生成实体类"的功能
参考下图,创建一个 Hibernate Reverse Engineering File
参考下图,点击Refresh,先把所有表列出来,这里出于演示,我们只把测试表TMP_EMP包含进来(即只处理这一张表)
完成之后,可以看到还有其它很多选择,点击"Tables & Columns"
把TMP_EMP给Add进来
类似的,这些图形化的操作,其实就是要生成一段xml
下面就让这些配置run起来,参考下图:(这个很坑,貌似在菜单里找不到,只能在工具栏里点击,而且还隐藏一个下拉菜单里)
注:如果工具栏里没有显示这个按钮,可以 window -> Customize Perspective,切换到Command Groups Availablity标签页,把Hibernate Code Generation给勾选上
这时,会弹出Hibernate的代码生成配置界面,比较重要的是:代码生成的输出目录(output directory),以及选择刚才创建的 reveng.xml(不选这个,hibernate就不知道要生成哪些表,以及生成的规则)
在Exporters面板里,通常我们只需要生成Domain Code(即:实体类),勾中
有时,生成java类后,eclipse不会自动刷新文件结构,建议下面这个也勾上
最后点击Run,顺利的话,就能看到新生成的java类
五、生成hibernate映射配置文件
刚才创建的反向工程配置文件,在运行时其实没多大作用,它只是用来告诉hiernate如何根据表结构生成java实体类,对于已经存在的java类(比如纯手写的),运行时,hibernate如何知道它对应于db中哪张表呢?答案还是配置文件,参考下图,创建Hibernate XML Mapping file(即hbm文件)
选择实体类所对应的包(或某个具体的类)
一路Next,直到完成,这样我们就得到了文件:TmpEmp.hbm.xml
生成hbm文件后,hibernate如何知道去读这个文件呢?我们总得给hibernate一些提示吧,双击hibernate.cfg.xml文件,找到Mappings节点,如下图:
点击add,把刚才创建的TmpEmp.hbm.xml给添加进来
保存之后,你会发现,其实无非就是在hibernate.cfg.xml里,自动加了一行:
注:Hibernate升级到4以后,原来的buildSessionFactory()方法在eclipse里会提示“过时”,最新4.3版hibernate下的正确写法为:
1 private static SessionFactory factory; 2 3 public static SessionFactory getFactory() { 4 Configuration configuration = new Configuration().configure(); 5 StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder() 6 .applySettings(configuration.getProperties()); 7 StandardServiceRegistryImpl registry = (StandardServiceRegistryImpl) builder 8 .build(); 9 factory = configuration.buildSessionFactory(registry); 10 11 return factory; 12 13 } 14 15 public static Session getSession() { 16 return factory.openSession(); 17 }
使用上述代码前,先import下面这几个package
1 import org.hibernate.Session; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 4 import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl; 5 import org.hibernate.cfg.Configuration;
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- 三天学会HTML5 ——多媒体元素的使用
- 问题解决——Group Box控件遮挡其它控件
- javaweb实战之商城项目开发(一)
- jQuery学习笔记二(jQuery语法)
- 一些实用的java工具包jar
- Shell 传递参数
- Android线程和线程池(一)--AsyncTask
- java io流
- 二进制文本转换帮助类
- 关于Comparable接口
- 导入Excel至SQL Server
- Date
- [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
- 北京Uber优步司机奖励政策(2月24日)
- HDU 4044 GeoDefense(动态规划)
- 28. Implement strStr()
- 详解Android TableLayout表格布局
- hdu 1864 最大报销额
- KVC,KVO,NSNotification总结
- Laravel报class does not exist的一种可能原因及其解决办法