java应用的运行环境有受管理环境(webSphere)和不受管理环境(swing,tomcat-这只猫只管理Servlet容器和连接池不管理事务)。hibernate可以与上述任何一种java应用的运行环境集成。只为彻底了解hibernate,这里使用Swing + hibernate + mysql的结构。
这种结构作为家庭作业可以,作为工具可以,作为项目/产品不行。原因有2:
1.项目框架的组织要求扬长避短。Swing的优势在于定制界面的灵活性和作为JAVA基类(鸡肋)的简单性, 辅以socket和多线程也有好的作为。而hibernate用来实现数据持久,是解决重量级容器的一种缓冲方法,达到程序的相对轻重平衡。这点没做到。
2.数据持久化从另一个方面可以理解为长期的大量内存占有。尤其峰值数据不通过专门的应用服务器去管理,很难保证程序健壮。而java的JVM只能管理1-2G的内存(根据版本不同 ),而且内存越大反应越慢。这点又PASS了。
这里是为什么故事的一个分支。今天的答案是struts + hibernate/ibats + spring就是一盘炒菜,各个食材的味道参杂在一起,模糊了彼此自己的特色。今天重点只在hibernate环境上,他的事务处理介绍会另作一份菜。
闲话少说,开始搭环境。
需要的环境:
IDE:eclipse;
db:mysql;
lib包:hibernate和mysql相关的lib包;
第三方工具:ultraEdit,mysql-front;
mysql-front资源在附件中。
目标:
通过swing按钮进行hibernate连接数据库测试。测试成功状态更新为连接成功;
否则状态更新为连接失败。
hibernate机制:
1.config加载db连接属性和需要持久化类的配置XML及持久化类本身(Menu);
2.根据config生成sessionFactory的线程,数据库表和java的持久化类之间的一一对应关系被sessionFactory持有;
3.sessionFactory生成一个新的session线程;
4.session线程读取sessionFactory加载的db连接属性通过db表和持久化类的映射进行数据库操作,并持有该结果;这里起事务,提交或回滚。
5.关闭session和sessionFactory,返回结果。
操作步骤如下:
1.生成java工程、相应的目录结构和swing界面;
目录结构如上图。目录结构说明如下:
1.1/dbvisit/src/com/toolstorage/example/dto/xml目录:存放JAVABEAN(DTO)和DB相关联的XML文件。
1.2/dbvisit/src/com/toolstorage/example/dto目录:存放JAVABEAN(DTO)
1.3/dbvisit/src/com/toolstorage/example/frame目录:存放界面和事件处理
1.4/dbvisit/src/com/toolstorage/example/opt目录:存放操作数据库的类。
1.5和SRC同级的CONFIG目录存放hibernate加载配置文件(动态变更数据库的关键)
2.引入hibernate和mysql需要的lib包。
3.构建JAVABEAN(DTO)和DB及两者的配置关系。
说明:其实就是写javabean、建数据库表、构建hibernate的关联配置XML。
3.1(图一)建立一个Menu类用来存放菜谱(getxxx,setxxx);
3.2(图三)建立数据库和menu表;
3.2(图一)建立Menu.hbm.xml,映射Menu类和menu表字段的映射关系。
4.构建hibernate.hbm.xml文件和hibernate.properties文件。
4.1文件hibernate.hbm.xml放在src目录下,session-factory中只存放
<mapping resource="com/toolstorage/example/dto/xml/Menu.hbm.xml"/>
4.2文件hibernate.properties放在config目录下,里面存放数据库连接配置相关的信息。
程序运行:
1. 运行Dbvisit里面的main方法生成如下界面:
2. 点击db test按钮,输入参数正确的话查到结果(图六);错误的话提示为成功并报出异常(图七)。如果要连接不同的数据库,就可以在这里修改参数。
小插曲1:DB或JAVA命名的时候需要注意关键字的规避。起先在DB中定义了explain作为菜单的解释说明字段,但在测试中怎么去连接怎么报错。按报错信息一步一步排查的时候发现是字段名用成关键字了,之后把explain改为explain2就好了。
小插曲2:javabean、数据库表、hibernate的关联配置XML三者任何一个先完成,剩余两个都可以用工具生成。但我这例子一来简单二来练练手,所以这些文件都是自己敲代码敲出来的。这种学习的方法推荐给大家,加深理解和增加经验都不错的。
小插曲3:开始的时候使用new Configuration().configure(String resource),希望可以加载
Hibernate.properties文件。但后来发现这个resource必须是hibernate特定的XML格式的文件。于是只好用new Configuration().setProperties(properties).configure()进行加载。
小插曲4:如果在hibernate.cfg.xml中配置了<mapping resource=”xxx”/>,那么Configuration对象在进行config.addClass(xxx)操作后,会报hibernate.cfg.xml中mapping的xxx找不到异常。(原因很简单看图一,Menu.hbm.xml和Menu.java不在同一个路径,如果用config.addClass(xxx)操作,hibernate的config会在和Menu.java相同目录下去找Menu.hbm.xml文件。找不到就报错。)
分享到:
相关推荐
用到了:JTree(支持增删改,支持无限级分类管理),JTable(支持增删改,各种查询,以及与JTree,JList之间的通信),JPopuMenu,...数据库参数在db.properties文件中配置(默认MySql帐号:root,密码:kevin 支持自动创建数据库和表..
第2章 企业内部通信系统(Swing+JavaDB 实现) 55 教学视频:1小时40分 2.1 开发背景 56 2.2 系统分析 56 2.2.1 需求分析 56 2.2.2 可行性分析 56 2.2.3 编写项目计划书 58 2.3 系统设计 60 2.3.1 系统目标 60 2.3.2...
- **安装/配置/管理及开发**:掌握IBM DB2和MySQL数据库的安装配置及基本开发技能。 6. **JDBC** - **JDBC工作原理**:理解JDBC如何连接数据库并执行SQL语句。 - **JDBC编程**:学习使用JDBC API进行数据库操作...
- **安装/配置/管理及开发**:掌握IBM DB2和MySQL数据库的安装配置和开发技能。 - **JDBC** - **工作原理**:理解JDBC的底层实现机制。 - **编程**:学会使用JDBC API进行数据库连接和数据操作。 - **高级JDBC...
使用Hibernate开发应用软件时,一些数据的存储会涉及到比较复杂的商务逻辑,基于JUnit的单元测试无法覆盖所有复杂商务逻辑的检测工作。当软件出现错误时,开发人员通常需要察看保存在数据库中的数据,并以此为依据...
2. **数据库交互**:项目可能使用了SQL数据库,如DB2或MySQL,这从DB2Sql.sql和Mysql.sql文件名可以推断。数据库用于存储和检索用户的记账数据,例如收支记录、类别信息等。开发者可能使用了JDBC(Java Database ...
4. lib:第三方库,包含项目所依赖的jar文件,如Spring框架、Hibernate ORM、MySQL JDBC驱动等。 5. build:编译生成的类文件和最终打包的可执行文件可能存放于此。 6. README.md:项目介绍和使用指南,可能包含如何...
Class.forName用于动态加载类,常在配置文件中配置类名时使用;GET和POST请求,GET可见且大小有限制,POST隐藏且数据量大;JSP中的动态INCLUDE和静态INCLUDE,动态在编译时包含,静态在解析时包含。 【就业与面试...
4. **Hibernate**:学习面向对象的数据库访问技术,掌握Hibernate框架及其在实际项目中的应用。 第三学期: 1. **HTML/JavaScript**:熟悉HTML和JavaScript的基础知识,用于构建网页前端。 2. **Servlet/JSP**:...
在新版本中,它还增加了对Hibernate的支持,可以直接将表格拖放到package explorer生成POJO,或反之将POJO拖放到DB视图创建表格。 4. **SWTEditor**:这是一个基于SWT(Standard Widget Toolkit)开发的...
Hibernate 用于带注释的数据持久性。 作为 DB,我最初使用的是 Derby DB,但它非常有限,所以我选择使用 MySql。 对于 GUI,我出于多种原因使用了 JavaFX。 因为我渴望学习新的东西而不是我已经知道的 Java Swing,...
在Java技术栈中,Tunneling2java利用了Java丰富的类库和框架,可能包括Swing或JavaFX进行用户界面设计,Spring框架处理业务逻辑和依赖注入,以及Hibernate或JDBC进行数据库交互。Java的跨平台特性使得该软件可以在...
在数据库方面,此系统可能采用了关系型数据库管理系统,如MySQL或Oracle,用于存储图书信息。这些信息可能包括书名、作者、出版社、出版日期、ISBN号、库存数量等字段。数据库设计时,会涉及到数据库模式的规划,...
1. **客户端层**:通常包括浏览器或者轻量级的富客户端应用程序,如JavaFX或Swing应用。它们负责用户交互,发送请求到服务器,并显示服务器返回的数据。 2. **Web层**:主要由Servlets、JSP(JavaServer Pages)和...
学习内容涵盖了Java基础语法、面向对象编程、异常处理、集合框架、IO流、网络编程、多线程和并发、Swing图形用户界面(GUI)开发等。实践项目包括基础的命令行程序、坦克大战游戏和贪吃蛇游戏,这些项目有助于加深对...
之后 等你对Java EE有些感悟的时候,你自然就会想不断扩展你的知识面,这时候你可以学习Spring、Hibernate,以及各种Web框架(如Struts、JSF、Webwork或是Tapestry等)。 随着技术、经验的不断积累,你会逐步关注分析...
4. **编程语言**:简历涵盖了多种编程语言,如C、C++(MFC)、Java(包括Swing、JDBC、JSP、Servlet和EJB)、C#、VB.Net、Shell Unix(ksh、csh、bash)、Perl、Python和COBOL,显示出跨平台和多领域的开发能力。...
此外,对于数据库的管理和查询,虽然最初使用的是MySQL Control Center这样的第三方工具,但随着项目的深入发展,也逐渐转向了更加专业的解决方案,比如使用WASD进行DB2数据库的管理和查询。 #### 五、总结与展望 ...