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

MYSQL
mysql Load Data InFile 的用法
MSSQL output使用
mysql 性能的检查和调优方法
mysql 的load data infile
MySQL 配置文件my.cnf 例子最详细翻译
MYSQL 随机 抽取实现方法及效率分析
mysql 存储过程的问题
Mysql my.ini 配置文件详解
mysql 控制台操作
mysql 服务完全卸载技巧
mysql 数据库设计
mysql 中文乱码 解决方法集锦
MYSQL 没有完全卸载将导致其安装不成功
mysql 教程 存储过程
asp.net 将图片上传到mysql数据库的方法
绿色版 mysql 安装配置
mysql root用户的密码修改和消除
MySQL 相关的环境变量
mysql 常用命令集锦[绝对精华]
linux mysql 安装与操作

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 176 ::
收藏到网摘: 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类看一下效果吧!