- 浏览: 147663 次
- 性别:
- 来自: 北京
最新评论
-
lin02127:
UserBean 的deleteUser(String id) ...
一个简单的hibernate实例(之一) -
luobiao:
不错,简洁明了!好久没弄了,都忘记了~看一下,又记起来很多了! ...
一个简单的hibernate实例(之一) -
nnnnon:
jpg图片的判断也可以这样进行:
if File.ext ...
很棒的目录递归处理 -
wyyjava2008:
,恩,谢谢楼主了。。
很简洁,不错,值得借鉴。。
一个简单的hibernate实例(之一) -
rainux:
为什么不直接 line.gsub("\t" ...
一个把紫光输入法的词库格式变为谷歌词库格式的ruby程序
一、下载hibernate-3.2 core版本,解压。
二、打开eclipse,建立一个用户库,命名为:hibernate3.2,导入刚解压的hibernate目录下的hibernate3.jar
并\lib目录下的所有jar文件。在Builder path的source and output fold中选择Folder,并默认给出的文件夹名。
在as JRE library use中选择JRE_LIB variable。
三、新建一个java工程。在其属性的Java Build Path中引入刚建立的hibernate3.2用户库并mysql的java驱动(
视你所用的数据库而定,在这我用的是mysql数据库)。
四、在src中建立一个包,设为px.malijun,并在其中建立以下几个Java Class:
建立相应的xml映射文件:
在数据库中建立一个myproject(按你的意思定名)数据库,在其中建立一个users表(向RoR学习):
注:我是用phpmyadmin对mysql数据库进行管理的,在建立的时候我特意为其选择了utf-8编码。
在src的根目录下(以上的user.hbm.xml映射文件与User.java在同一目录下)建立hibernate的配置文件:
ok 了,下面我们就进入我们的实际使用阶段了:
由于常规操作都类似,我们建立了一个抽象类:
然后建立一个具体针对User操作的一个类:
万事大吉,所欠的事情就是调用UerBean中定义的操作进行我们实际所要针对User所做的事情了。我们写一个简单的
测试:
哦,好简洁的代码。这个测试在执行以后,你查看一下数据库中的users表,你就会发现,我们真的add一个user了,其它的
操作,我们就略了。
下一篇幅我们介绍如何在web环境下使用我们以上编写的程序。
二、打开eclipse,建立一个用户库,命名为:hibernate3.2,导入刚解压的hibernate目录下的hibernate3.jar
并\lib目录下的所有jar文件。在Builder path的source and output fold中选择Folder,并默认给出的文件夹名。
在as JRE library use中选择JRE_LIB variable。
三、新建一个java工程。在其属性的Java Build Path中引入刚建立的hibernate3.2用户库并mysql的java驱动(
视你所用的数据库而定,在这我用的是mysql数据库)。
四、在src中建立一个包,设为px.malijun,并在其中建立以下几个Java Class:
User.java
- package px.malijun;
- public class User {
- private int id;
- private String name;
- private String password;
- private String email;
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
建立相应的xml映射文件:
User.hbm.xml
- <?xml version="1.0" encoding='utf-8'?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="px.malijun.User" table="users">
- <id name="id">
- <generator class="identity"/>
- </id>
- <property name="name"/>
- <property name="password"/>
- <property name="email"/>
- </class>
- </hibernate-mapping>
在数据库中建立一个myproject(按你的意思定名)数据库,在其中建立一个users表(向RoR学习):
- CREATE TABLE `users` (
- `id` int(11) NOT NULL auto_increment,
- `name` varchar(255) default NULL,
- `password` varchar(255) default NULL,
- `email` varchar(255) default NULL,
- PRIMARY KEY (`id`)
- )
注:我是用phpmyadmin对mysql数据库进行管理的,在建立的时候我特意为其选择了utf-8编码。
在src的根目录下(以上的user.hbm.xml映射文件与User.java在同一目录下)建立hibernate的配置文件:
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>
- <!-- 显示实际操作数据库时的SQL -->
- <property name="show_sql">true</property>
- <!-- SQL 方言,这边设定的是MySQL -->
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- JDBC 驱动程序 -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <!-- JDBC URL 注意这边我设定的所使用的编码 -->
- <property name="connection.url">jdbc:mysql://localhost:3306/myproject?useUnicode=true&characterEncoding=utf8</property>
- <!-- 数据库使用者 -->
- <property name="connection.username">root</property>
- <!-- 数据库密码 -->
- <property name="connection.password"></property>
- <!-- 以下设置对象与数据库表格映像文件 -->
- <mapping resource="px/malijun/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
ok 了,下面我们就进入我们的实际使用阶段了:
由于常规操作都类似,我们建立了一个抽象类:
HibernateBase.java
- package px.malijun;
- import org.hibernate.*;
- import org.hibernate.cfg.*;
- import java.util.*;
- import java.io.IOException;
- import java.io.PrintWriter;
- public abstract class HibernateBase
- {
- protected SessionFactory sessionFactory;//会话工厂,用于创建会话
- protected Session session;//hibernate会话
- protected Transaction transaction; //hiberante事务
- public HibernateBase()throws HibernateException
- {
- this.initHibernate();
- }
- // 帮助方法
- protected void initHibernate()
- throws HibernateException {
- // 装载配置,构造SessionFactory对象
- sessionFactory = new Configuration().configure().buildSessionFactory();
- }
- /**
- *开始一个hibernate事务
- */
- protected void beginTransaction()
- throws HibernateException {
- session = sessionFactory.openSession();
- transaction = session.beginTransaction();
- }
- /**
- *结束一个hibernate事务。
- */
- protected void endTransaction(boolean commit)
- throws HibernateException {
- if (commit) {
- transaction.commit();
- } else {
- //如果是只读的操作,不需要commit这个事务。
- transaction.rollback();
- }
- session.close();
- }
- }
然后建立一个具体针对User操作的一个类:
UserBean.java
- package px.malijun;
- import org.hibernate.*;
- import org.hibernate.cfg.*;
- import java.util.*;
- /**
- * 和course相关的业务逻辑
- */
- public class UserBean extends HibernateBase {
- public UserBean() throws HibernateException {
- super();
- }
- /**
- * 增加一个Course
- */
- public void addUser(User user) throws HibernateException {
- beginTransaction();
- session.save(user);
- endTransaction(true);
- }
- /**
- * 查询系统中所有的Course,返回的是包含有Course持久对象的Iterator。
- */
- public Iterator getAllUsers() throws HibernateException {
- String queryString = "select users from User as user";
- beginTransaction();
- Query query = session.createQuery(queryString);
- Iterator it = query.iterate();
- return it;
- }
- /**
- * 删除给定ID的course
- */
- public void deleteUser(String id) throws HibernateException {
- beginTransaction();
- User user = (User) session.load(User.class, id);
- session.delete(user);
- endTransaction(true);
- }
- /**
- * 按course的名字进行模糊查找,返回的是包含有Course持久对象的Iterator。
- */
- public Iterator getSomeUser(String name) throws HibernateException {
- String queryString = "select u from User as u where u.name like :name";
- beginTransaction();
- Query query = session.createQuery(queryString);
- query.setString("name", "%" + name + "%");
- Iterator it = query.iterate();
- return it;
- }
- }
万事大吉,所欠的事情就是调用UerBean中定义的操作进行我们实际所要针对User所做的事情了。我们写一个简单的
测试:
Test.java
- package px.malijun;
- public class Test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- UserBean ub=new UserBean();
- User user = new User();
- user.setName("你好,世界!");
- user.setPassword("123456");
- user.setEmail("ok@ujs.edu.cn");
- ub.addUser(user);
- }
- }
哦,好简洁的代码。这个测试在执行以后,你查看一下数据库中的users表,你就会发现,我们真的add一个user了,其它的
操作,我们就略了。
下一篇幅我们介绍如何在web环境下使用我们以上编写的程序。
评论
3 楼
lin02127
2013-03-10
UserBean 的deleteUser(String id)
id 的参数类型应该是 id
学习了 基本上看懂了一点 Hibernate的操作 多谢分享
id 的参数类型应该是 id
学习了 基本上看懂了一点 Hibernate的操作 多谢分享
2 楼
luobiao
2012-04-24
不错,简洁明了!好久没弄了,都忘记了~看一下,又记起来很多了!
1 楼
wyyjava2008
2009-12-14
,恩,谢谢楼主了。。
很简洁,不错,值得借鉴。。
很简洁,不错,值得借鉴。。
发表评论
-
计算字符串长度
2010-11-05 21:18 1000计算含有中文字符串的长度(同时展示如何修改已有的类) ... -
git使用
2010-11-04 11:21 1022http://hi.baidu.com/i7521/blog/ ... -
很棒的目录递归处理
2010-11-03 21:54 1224原来一直是通过自己实现递归调用来处理目录,今天在《RubyPr ... -
使用railswhere插件
2010-11-02 16:49 1003地址:http://code.google.com/p/rai ... -
paperclip 上传文件(解决中文文件无法上传问题)
2010-11-02 16:44 2408在新项目中使用了paperclip这个文件上传插件,一切都很满 ... -
中文ruby
2009-05-25 16:06 1236# encoding: utf-8 out=File.ope ... -
导入数据到sqlite中
2008-12-05 15:58 1676sqlite> .separator \t sqlite ... -
用jruby操作excel
2008-11-28 20:39 1678一、下载jruby二进制安 ... -
一个把紫光输入法的词库格式变为谷歌词库格式的ruby程序
2008-10-11 20:52 1294outfile = File.new("out.tx ... -
一个简单的REST实例
2007-01-23 20:57 5937首先用ruby script/generate migrati ... -
Excluding column names from a listing
2006-12-27 09:44 1457Usually, it is better to make y ... -
计算年数的一个函数
2006-12-25 15:34 1394Q: I've got a datetime column i ... -
eclipse安装插件(以安装语言包为例)
2006-12-19 23:31 2753解压缩 eclipse-SDK-3.2-win32.zip到 ... -
一个简单的hibernate实例(之二)
2006-12-17 16:37 2962上一篇我们编写了用一个普通的java类来对我们的hiberna ... -
ubuntu中realplayer无法开启的解决
2006-12-08 09:44 1742是和scim的冲突问题 sudo gedit ... -
ubuntu中dpkg的使用
2006-12-05 15:26 5688以下为操作 deb 包的常用 Dpkg 指令表,供初学的朋友参 ... -
rails 上传图片
2006-12-03 14:41 4583ruby 代码 class CreatePict ... -
mysql phpmyadmin的安装
2006-11-24 19:04 1522mysql的安装: 解压mysql安装包到某一目录下 ... -
apache 2.2 php 5.2 mysql 5.1安装与配置
2006-11-23 23:21 8623让php找到mysql的关键是要有两个文件:php_mys ... -
文件处理
2006-11-16 16:43 1452require 'fileutils' require 'p ...
相关推荐
现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过...
hibernate-swarmcache:支持SwarmCache,一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想选择。 hibernate-proxool:支持Proxool...
本系统采用struts+spring+hibernate架构,重在讲述三者结合在一起的应用开发,所有源程序都 有详细的注释,供入门者学生参考,未经作者允许不得用于...程序只是整个系统中的一个模块,用于和各位程序爱好者交流之用。
JSP开发之hibernate之单向多对一关联的实例 一对多的基础上来测试单向多对一的关联 hibernate多对一的关联关系定义: 和单向一对多不同的是:一对多是在意的一方的一方定义set集合,在映射文件中 :单向多...
我专门申请了一个网盘.所有下载地址在下载下来的这个rar包里面都有详细的介绍和说明. 说一下这个rar里面带的东西.除了源码外带了几篇文档.分别是关于项目中所使用的dwr的配置.table组件的配置说明文档.junit单元...
这是Java常用框架阶段在为学生答疑时做的一个SSH整合分页实例(第一部分),涉及了SSH整合、日期模糊查询、查询条件绑定、查询结果排序等功能,希望能为大家提供一些思路。 分页是绝大多数MIS系统必需的功能之一,...
我自己做的一个整合struts+hibernate实现的增加,显示,删除的全功能的例子。希望可以给初学者提供一些参考。其中定有不足之处.希望得到您的批评
本文并不想介绍Struts,Spring,Hibernate的原理系统架构等,本文的目的是通过一个较复杂地实例介绍如何整合Struts,Spring,Hibernate,网上很多资料介绍的例子虽然也能达到目的,但功能都比较单一,复杂的例子时会...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
4.1. 一个简单的POJO例子 4.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 4.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.3. 提供一个标识属性(identifier property)(可...
创建一个Criteria实例 12.2. 缩小结果集范围 12.3. 对结果排序 12.4. 关联(Associations) 12.5. 动态关联对象获取(Dynamic association fetching) 12.6. 根据示例查询(Example queries) 13...
5.1. 一个简单的POJO例子 5.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供一个标识属性(identifier property)...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
ssh2整合应用之入门实例 一个struts2+hibernate3+spring2.5的整合
整个层次结构中的所有父类和子类属性都映射到同一个表中,他们的实例通过一个辨别符列(discriminator)来区分。 Plane 是父类。@DiscriminatorColumn 注解定义了辨别符列。对于继承层次结构中的每个类, @...
轻量级JavaEE应用的持久层框架,是一个完全的ORM框架。(说完这句话,肯定有很多人懵圈了,下面我来一个个解释) ... 知道了一些大概的名词解释,现在来看看hibernate在一个工程中到底处于一个什么样的地位
这是Java常用框架阶段在为学生答疑时做的一个SSH整合分页实例(第二部分),涉及了SSH整合、日期模糊查询、查询条件绑定、查询结果排序等功能,希望能为大家提供一些思路。 分页是绝大多数MIS系统必需的功能之一,...