Hibernate入门经典实例

http://blog.csdn.net/yidamr/article/details/8755401

hibernate是开源的,用于封装数据访问层的组件,称为:数据访问层框架(持久层框架)

写一个入门案例,体现hibernate的工作方式!明白hibernate作用及其程序结构!

例子:用Hibernate实现增删查改案例


环境:

IDE工具:Myeclipse ,mysql

所需jar包:

hibernate的jar:


mysql所需jar(程序用到mysql数据库):

mysql-connector-java-5.1.6-bin.jar

步骤:

1.创建一个web项目

2.导入jar包

3.建数据库和表文件

4.建hibernate和数据库的关联配置文件hibernate.cfg.xml

5.建立和数据库关联的POJO类User.java

6.建立数据库和User.java关联的配置文件User.hbm.xml

7.在hibernate.cfg.xml中关联映射文件

8.写测试类(TestHibernate)

项目最后截图:


开始:

1.创建一个项目

还是截图,创建的项目名称为HibernateSpExa

2.导入所需jar包

导入所需jar包到项目的lib文件夹下(或者通过Build Path导入也可,这里需要hibernate和Mysql的jar包)


3.建数据库和表文件

在WebRoot下面建立db.sql文件,在里面建立下图所示内容,并关联Mysql运行建立数据库和表


4.建hibernate和数据库的关联配置文件hibernate.cfg.xml

主要是配置连接数据库:

  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.         <!-- 数据库连接信息 -->  
  10.         <property name="connection.url">  
  11.             jdbc:mysql://localhost:3306/test  
  12.         </property>  
  13.         <property name="connection.username">root</property>  
  14.         <property name="connection.password">root</property>  
  15.         <property name="connection.driver_class">  
  16.             com.mysql.jdbc.Driver  
  17.         </property>  
  18.           
  19.         <!-- hibernate配置 -->  
  20.         <!-- 方言配置,用于配置对哪个的SQL语句 -->  
  21.         <property name="dialect">  
  22.             org.hibernate.dialect.MySQLDialect  
  23.         </property>  
  24.         <!-- 将Sql打印到控制台,一般用于数据库调优 -->  
  25.         <property name="show_sql">true</property>  
  26.         <!-- 打印出的SQL语句以缩进的形式打印出来 -->  
  27.         <property name="format_sql">true</property>  
  28.               
  29.     </session-factory>  
  30.   
  31. </hibernate-configuration>  

5.建立和数据库关联的POJO类User.java

POJO类

  1. package com.TodayMZ.hiber.po;  
  2.   
  3. public class User {  
  4.     private Integer id;  
  5.     private String loginName;  
  6.     private String password;  
  7.     private String name;  
  8.   
  9.     public Integer getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.     public void setId(Integer id) {  
  14.         this.id = id;  
  15.     }  
  16.   
  17.     public String getLoginName() {  
  18.         return loginName;  
  19.     }  
  20.   
  21.     public void setLoginName(String loginName) {  
  22.         this.loginName = loginName;  
  23.     }  
  24.   
  25.     public String getPassword() {  
  26.         return password;  
  27.     }  
  28.   
  29.     public void setPassword(String password) {  
  30.         this.password = password;  
  31.     }  
  32.   
  33.     public String getName() {  
  34.         return name;  
  35.     }  
  36.   
  37.     public void setName(String name) {  
  38.         this.name = name;  
  39.     }  
  40.   
  41. }  

6.建立数据库和User.java关联的配置文件User.hbm.xml

配置User.java与数据库字段关联的字段

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4.   
  5. <hibernate-mapping>  
  6.     <class name="com.TodayMZ.hiber.po.User" table="t_user">  
  7.   
  8.         <id name="id" type="integer" column="t_id">  
  9.             <generator class="identity"></generator>  
  10.         </id>  
  11.         <property name="loginName" type="string" column="t_login_name">  
  12.         </property>  
  13.         <property name="password" type="string" column="t_password">  
  14.         </property>  
  15.         <property name="name" type="string" column="t_name">  
  16.         </property>  
  17.     </class>  
  18. </hibernate-mapping>  

7.在hibernate.cfg.xml中关联映射文件

(如图配置文件)

  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.         <!-- 数据库连接信息 -->  
  10.         <property name="connection.url">  
  11.             jdbc:mysql://localhost:3306/test  
  12.         </property>  
  13.         <property name="connection.username">root</property>  
  14.         <property name="connection.password">root</property>  
  15.         <property name="connection.driver_class">  
  16.             com.mysql.jdbc.Driver  
  17.         </property>  
  18.           
  19.         <!-- hibernate配置 -->  
  20.         <!-- 方言配置,用于配置对哪个的SQL语句 -->  
  21.         <property name="dialect">  
  22.             org.hibernate.dialect.MySQLDialect  
  23.         </property>  
  24.         <!-- 将Sql打印到控制台,一般用于数据库调优 -->  
  25.         <property name="show_sql">true</property>  
  26.         <!-- 打印出的SQL语句以缩进的形式打印出来 -->  
  27.         <property name="format_sql">true</property>  
  28.               
  29.         <!-- 在配置文件中关联映射文件 -->  
  30.         <mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />  
  31.   
  32.     </session-factory>  
  33.   
  34. </hibernate-configuration>  

8.写测试类(TestHibernate)

测试类主要用于测试hibernate的增删查改功能!

hibernate封装了SQL语句,只需要调用hibernate的API就可以实现增删查改,比SQL语句简便

增加save方法:
  1. package com.TodayMZ.hiber.test;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.Transaction;  
  6. import org.hibernate.cfg.Configuration;  
  7. import org.junit.Test;  
  8.   
  9. import com.TodayMZ.hiber.po.User;  
  10.   
  11. public class TestHibernate {  
  12.     @Test  
  13.     public void test1(){  
  14.         User user=new User();  
  15.         user.setLoginName("todayMZ");  
  16.         user.setName("today");  
  17.         user.setPassword("1234");  
  18.           
  19.         Configuration conf=new Configuration();/*调用HibernateAPI,装载Hibernate配置文件*/  
  20.         conf.configure();/*装载默认配置文件,所过指定则装载conf.configure(new File("abc.xml"););*/  
  21.         SessionFactory factory=conf.buildSessionFactory();/*创建SessionFactory*/  
  22.         Session session=factory.openSession(); /*创建Session*/  
  23.           
  24.         Transaction  tx=session.getTransaction();/*获取事物*/  
  25.         tx.begin(); /*开启事物*/   
  26.           
  27.         session.save(user);/*插入数据*/  
  28.                       
  29.         tx.commit(); /*提交事物*/  
  30.         session.close();/*关闭事物*/      
  31.     }  
  32. }  

更改Update方法:

  1. package com.TodayMZ.hiber.test;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.Transaction;  
  6. import org.hibernate.cfg.Configuration;  
  7. import org.junit.Test;  
  8.   
  9. import com.TodayMZ.hiber.po.User;  
  10.   
  11. public class TestHibernate {  
  12.     @Test  
  13.     public void test1(){  
  14.   
  15.         User user=new User();  
  16.         user.setId(1);  
  17.         user.setLoginName("todayMZ2");  
  18.         user.setName("today2");  
  19.         user.setPassword("12345");  
  20.           
  21.         Configuration conf=new Configuration();  
  22.         conf.configure();  
  23.         SessionFactory factory=conf.buildSessionFactory();  
  24.         Session session=factory.openSession();   
  25.           
  26.         Transaction  tx=session.getTransaction();  
  27.         tx.begin();   
  28.               
  29.         session.update(user);/*更改*/  
  30.                   
  31.         tx.commit();   
  32.         session.close();      
  33.     }  
  34. }  

查询Query方法:

  1. package com.TodayMZ.hiber.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.hibernate.Query;  
  6. import org.hibernate.Session;  
  7. import org.hibernate.SessionFactory;  
  8. import org.hibernate.Transaction;  
  9. import org.hibernate.cfg.Configuration;  
  10. import org.junit.Test;  
  11.   
  12. import com.TodayMZ.hiber.po.User;  
  13.   
  14. public class TestHibernate {  
  15.     @Test  
  16.     public void test1(){  
  17.           
  18.         Configuration conf=new Configuration();  
  19.         conf.configure();  
  20.         SessionFactory factory=conf.buildSessionFactory();  
  21.         Session session=factory.openSession();  
  22.           
  23.         Transaction  tx=session.getTransaction();  
  24.         tx.begin();   
  25.          //查询语句       
  26.         Query query=session.createQuery("from User");  
  27.         List<User> userList=query.list();  
  28.         for(User user :userList){  
  29.             System.out.println(user.getId()+","+user.getLoginName()+","  
  30.         +user.getName()+","+user.getPassword());          
  31.         }  
  32.                           
  33.         tx.commit();   
  34.         session.close();  
  35.     }  
  36. }  

删除delete方法:

  1. package com.TodayMZ.hiber.test;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.Transaction;  
  6. import org.hibernate.cfg.Configuration;  
  7. import org.junit.Test;  
  8.   
  9. import com.TodayMZ.hiber.po.User;  
  10.   
  11. public class TestHibernate {  
  12.     @Test  
  13.     public void test1(){  
  14.         User user=new User();  
  15.         user.setId(1);  
  16.         Configuration conf=new Configuration();  
  17.         conf.configure();  
  18.         SessionFactory factory=conf.buildSessionFactory();  
  19.         Session session=factory.openSession();  
  20.           
  21.         Transaction  tx=session.getTransaction();  
  22.         tx.begin();   
  23.               
  24.         session.delete(user);/*删除*/  
  25.                           
  26.         tx.commit();   
  27.         session.close();  
  28.     }  
  29. }  
运行:

在Testhibernate类右键选择Run As ---->JUnit Test,控制台就会打印出当前执行的SQL语句和运行结果!

that's OK!

----------------------------------------我是分割线-------------------------------------------------

文章适合初学者,都是基础知识(高手请绕道),给出了一个hibernate的执行基本结构。

给自己看,也给刚接触的人儿看!


转载请说明出处:http://blog.csdn.net/todaymz/article/details/8755401


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值