Hibernate结合MYSQL数据库简单教程

开发 后端
本文向您介绍在Eclipse中使用Hibernate结合MySQL数据库开发的一个简明教程。

在网上找了很多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类看一下效果吧!

您正在阅读: Hibernate结合MYSQL数据库简单教程

【编辑推荐】

  1. Hibernate单元测试的方法:HSQLDB
  2. Hibernate的两种配置文件格式
  3. Hibernate/JPA成功使用的十点心得
责任编辑:张攀 来源: 百度空间
相关推荐

2011-03-21 17:00:23

MySQL数据库

2009-09-24 14:12:22

Hibernate数据

2009-09-25 13:18:15

Hibernate数据

2011-08-30 12:59:52

Qt数据库

2010-06-04 09:58:03

MySQL数据库备份

2010-06-09 11:32:51

MySQL数据库备份

2009-06-24 07:53:47

Hibernate数据

2009-07-02 09:35:02

hibernate访问

2009-09-24 13:17:37

Hibernate类库

2010-05-14 11:04:17

连接MySQL

2019-01-02 09:30:59

MySQL数据库日志审计

2011-04-06 09:09:17

MySQL数据库备份

2009-09-29 14:03:14

Hibernate数据

2017-05-23 14:56:49

MySQLvsftpd虚拟用户

2009-06-24 07:58:52

Hibernate多数

2018-01-04 10:43:43

OracleMysqlJava

2009-09-28 13:33:48

Hibernate访问

2010-05-27 14:55:40

简单备份MySQL

2010-05-17 10:24:44

MySQL数据库

2010-06-12 13:47:30

连接MySQL 数据库
点赞
收藏

51CTO技术栈公众号