一、Hibernate概述
(一)什么是Hibernate?
(二)使用Hibernate的优点
1、Hibernate可以使用在java的任何项目中,不一定非要使用在java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。
2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。
3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。
二、Hibernate开发的环境搭建
(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。
(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。
(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)
1. <!DOCTYPE hibernate-configuration PUBLIC
2. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
3. >
4.
5. <hibernate-configuration>
6. <session-factory >
7. <!-- mysql数据库驱动 -->
8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
9. <!-- mysql数据库名称 -->
10. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
11. <!-- 数据库的登陆用户名 -->
12. <property name="hibernate.connection.username">root</property>
13. <!-- 数据库的登陆密码 -->
14. <property name="hibernate.connection.password">root</property>
15. <!-- 方言:为每一种数据库提供适配器,方便转换 -->
16. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
17.
18. </session-factory>
19. </hibernate-configuration>
三、HIbernate第一个实例
该实例的目录结构如下
说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包
1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件
2、建立User实体类
1. import java.util.Date;
2.
3. public class User {
4. private String id;
5. private String username;
6. private String password;
7. private Date createTime;
8. private Date expireTime;
9.
10. public String getId() {
11. return id;
12. }
13. public void setId(String id) {
14. this.id = id;
15. }
16. public String getUsername() {
17. return username;
18. }
19. public void setUsername(String userName) {
20. this.username = userName;
21. }
22. public String getPassword() {
23. return password;
24. }
25. public void setPassword(String password) {
26. this.password = password;
27. }
28. public Date getCreateTime() {
29. return createTime;
30. }
31. public void setCreateTime(Date createTime) {
32. this.createTime = createTime;
33. }
34. public Date getExpireTime() {
35. return expireTime;
36. }
37. public void setExpireTime(Date expireTime) {
38. this.expireTime = expireTime;
39. }
40. }
2、提供User.hbm.xml文件,完成实体类的映射
1. <?xml version="1.0"?>
2. <!DOCTYPE hibernate-mapping PUBLIC
3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4. >
5.
6. <hibernate-mapping>
7. <class name="com.example.hibernate.User">
8. <id name="id">
9. <generator class="uuid"/>
10. </id>
11. <property name="username"/>
12. <property name="password"/>
13. <property name="createTime"/>
14. <property name="expireTime"/>
15. </class>
16. </hibernate-mapping>
3、配置hibernate.cfg.xml文件
1. <hibernate-configuration>
2. <session-factory >
3. <!-- mysql数据库驱动 -->
4. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
5. <!-- mysql数据库名称 -->
6. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
7. <!-- 数据库的登陆用户名 -->
8. <property name="hibernate.connection.username">root</property>
9. <!-- 数据库的登陆密码 -->
10. <property name="hibernate.connection.password">root</property>
11. <!-- 方言:为每一种数据库提供适配器,方便转换 -->
12. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
13.
14. <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>
15. </session-factory>
16. </hibernate-configuration>
4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl
1. import org.hibernate.cfg.Configuration;
2. import org.hibernate.tool.hbm2ddl.SchemaExport;
3. /**
4. * 将hbm生成ddl
5. * @author BCH
6. *
7. */
8. public class ExoprtDB {
9.
10. public static void main(String[] args) {
11. //默认读取hibernate.cfg.xml文件
12. new Configuration().configure();
13.
14. new SchemaExport(cfr);
15. true, true);
16. }
17. }
5、向表中添加数据
1. import java.util.Date;
2.
3. import org.hibernate.Session;
4. import org.hibernate.SessionFactory;
5. import org.hibernate.cfg.Configuration;
6.
7. public class Client {
8. public static void main(String[] args) {
9. //读取配置文件
10. new Configuration().configure();
11.
12. SessionFactory factory = cfg.buildSessionFactory();
13.
14. null;
15. try{
16. session = factory.openSession();
17. //开启事务
18. session.beginTransaction();
19.
20. new User();
21. "用户名");
22. "123");
23. new Date());
24. new Date());
25.
26. session.save(user);
27. //提交事务
28. session.getTransaction().commit();
29.
30. catch(Exception e){
31. e.printStackTrace();
32. //回滚事务
33. session.getTransaction().rollback();
34. finally{
35. if(session != null){
36. if(session.isOpen()){
37. //关闭session
38. session.close();
39. }
40. }
41. }
42. }
43. }
执行该java文件就可以完成向表中增加数据了,效果如下
(四)总结
通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。
在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。