当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL:Hibernate结合MYSQL数据库简单教程

MYSQL
提高MySQL 查询效率的三个技巧
mysql同步复制搭建方法指南详细步骤
详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始
MySQL Replace INTO的使用
mysql 分页优化解析
同时运行多个MySQL服务器的方法
mysql主从服务器同步心得体会
删除mysql数据库中的重复数据记录
mysql忘记密码的解决方法
mysql替换表中的字符串的sql语句
Lost connection to MySQL server during query的解决
mysql出现Error performing load command的解决方法
mysql中的“money”类型说明
mysql常见错误集锦
MYSQL administrator 使用
MYSQL初学者命令行使用指南
MySQL的Query Cache原理分析
linux下改良版本mysqldump来备份MYSQL数据库
mysql删除表中某一字段重复的记录
log引起的mysql不能启动的解决方法

MySQL:Hibernate结合MYSQL数据库简单教程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 158 ::
收藏到网摘: n/a

在网上找了很多Hibernate的相关教程,大多数都是结合WEB服务器的,自己写一个单独的示例在Eclipse下直接运行,不需要自己写ANT脚本,不需要结合web服务器。但是需要MYSQL数据库-_-

    首先要学会如何使用Eclipse,然后要下载Hibernate需要的所有JAR文件,最后安装好MYSQL
准备开始!

    第一步,我们要创建一个表 结构如下

    +-----------+--------------+------+-----+---------+----------------+
    | Field  | Type | Null | Key | Default | Extra  |
    +-----------+--------------+------+-----+---------+----------------+
    | id| int(11)  | NO| MUL | NULL| auto_increment |
    | title| varchar(400) | YES | | NULL||
    | content | text | YES | | NULL||
    | time  | datetime | YES | | NULL||
    +-----------+--------------+------+-----+---------+----------------+

    第二步,在Eclipse中创建一个JAVA项目(我在项目中用到的包名是cn.com.nick.hbm)。编写News.java类,这个类对应了数据库中的表

 package cn.com.nick.hbm;
import java.util.Date;
public class News
{
private int id;
private String title;
private String content;
private Date date;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public Date getDate()
{
return date;
}
public void setDate(Date date)
{
this.date = date;
}
}

    第三步,配置对应关系 保存为News.hbm.xml文件 与News类在同一目录下(并不是一定要在同一目录下,为了方便暂时先放在这里)
 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">











 

    第四步,配置hibernate.cfg.xml 注意这个名字不能改,并且要放到SRC的跟路径下(这里要注意,如果放错地方示例中的方法是找不到这个文件的)
 
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
true

com.mysql.jdbc.Driver

thread

jdbc:mysql://localhost:3306/test

root
123

org.hibernate.dialect.MySQLDialect

my
 

最后创建一个测试类 Test.java 代码如下,里边有注释说明
package cn.com.nick.hbm;
import java.util.Date;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
public class Test
{
private static final SessionFactory sessionFactory;
static
{
try
{
// 这里创建了SessionFactory 将hibernate.cfg.xml文件放到SRC的跟路径下
// Hibernate会自己找到
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable ex)
{
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
public static void main(String[] args)
{
// 实例化一个新的News对象,并填充内容
News news = new News();
news.setTitle("测试标题");
news.setContent("添加测试内容");
news.setDate(new Date());
Test t = new Test();
// 调用Test类下的存储方法,相当于执行INSERT语句
// t.Save(news);
// 调用查询方法,显示数据库的内容
t.select();
// 调用更新方法
// t.update();
// 调用删除
// t.delete();
}
/**
* 一个简单的添加数据方法
* @param news news对象,这个对象将被添加到库中
*/
public void Save(News news)
{
try
{
//获取hibernate的session
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//这里只需要调用save方法把news对象传进去就插入成功了!
session.save(news);
session.getTransaction().commit();
} catch (HibernateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 查询方法
*/
public void select()
{
try
{
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//注意!!!这里的 News 不是表名称! 是对象名所以要注意大小写
String sql=" from News";
//带条件的查询
//String sql="from News where id=1";
//用session.createQuery()执行HQL查询语句
List l = session.createQuery(sql).list();
//在控制台循环输出
for (News n : l)
{
System.out.println(n.getId());
System.out.println(n.getTitle());
System.out.println(n.getContent());
System.out.println(n.getDate());
System.out.println("==============");
}
session.getTransaction().commit();
} catch (HibernateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 更新方法
*/
public void update()
{
try
{
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//定义了要装载对象的ID
Integer id = 1;
//用load方法装载一个对象进来
News n = (News) session.load(News.class, new Integer(id));
//重新设置这个对象的标题
n.setTitle("更新后标题");
//用update方法更新这个对象
session.update(n);
session.getTransaction().commit();
} catch (HibernateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete()
{
try
{
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//定义了要装载对象的ID
Integer id = 6;
//用load方法装载一个对象进来
News n = (News) session.load(News.class, new Integer(id));
//用delete方法删除这个对象
session.delete(n);
session.getTransaction().commit();
} catch (HibernateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


    好啦,直接运行Test类看一下效果吧!