Hibernate框架学习(一 )

转载地址:http://blog.csdn.net/lishuangzhe7047/article/details/23710893


Hibernate框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作hibernate框架。

 只要实体类写好配置文件配好,就能实现和数据库的映射,其中实体类对应表,类的属性对应数据库的表字段。 这样就不用管数据库的相关操作了。


一:映射

 下面介绍使用hibernate框架实现简单的单表和实体间的映射。

 如学生实体类Student映射成数据库中的T_student

 


 


 首先需要我们编写实体类,提供属性的set get方法


 



 实体类和数据库表的映射全靠映射文件,也就是xml配置文件,配置文件是和实体类对应的,一个实体类对应一个映射配置文件。配置文件内容解析如下:


 


二:使用


1,环境配置

配置Hibernate框架的环境,需要拷贝框架的jar包到我们程序中,常用的jar包一般有14个,如下图:


 

2,创建javabean对象(以User为例)

    对象的属性一般与对应表中的字段一致,需要提供每个属性的setget方法,用工具生成就行了,不用工具生成的话,一定要注意命名规范,属性的名称首字母大写后在前面加set或get字段。

 

3,配置hibernate.cfg.xml文件

 配置一个关联与特定数据库全局的工厂<SessionFactory>如果要使用多个数据库,就多配置一个<SessionFactory>标签,标签中制定连接数据库的信息。

 我们需要把配置文件存在在项目的src下面,Hibernate启动时会自动到classpath根目录下面查找名为hibernate.cfg.xml文件,所以配置文件的名称不要更改。

 

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPEhibernate-configuration PUBLIC  
  3. "-//Hibernate/HibernateConfiguration DTD 3.0//EN"  
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.    
  6. <hibernate-configuration>  
  7.    <session-factory>  
  8.      <!--配置连接数据库信息 -->  
  9.      <propertynamepropertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/egov</property>  
  10.      <propertynamepropertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  11.      <propertynamepropertyname="hibernate.connection.username">egov</property>  
  12.      <propertynamepropertyname="hibernate.connection.password">egov</property>  
  13.     
  14.      <propertynamepropertyname="show_sql">true</property>  
  15.      <propertynamepropertyname="hibernate.format_sql">true</property>  
  16.      <propertynamepropertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  17.      <!--实体类的路径-->  
  18.      <mappingresourcemappingresource="com/hibernate/pojo/User.hbm.xml"/>  
  19.    
  20.    </session-factory>  
  21. </hibernate-configuration></span>  


4,配置映射文件

 映射文件是和javabean对象对应的,一般以对象的名称加.xml文件命名,映射文件的作用就是要告诉Hibernate应该访问数据库的哪个表以及表中的哪个对象。

 在hibernate-mapping标签(tag)之间,含有一个class元素。所有的持久化实体类(再次声明,或许接下来会有依赖类,就是那些次要的实体)都需要一个这样的映射,来把类对象映射到SQL数据库里的表。

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;"><hibernate-mapping>  
  2.     <class name="beanname" table="tablename"/>  
  3. </hibernate-mapping>  
  4.  </span>  

 配置好映射文件后需要在hibernate.cfg.xml文件中配置<mapping resource > 标签,指向刚定义的映射文件。

 

实例:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPEhibernate-mapping PUBLIC  
  3. "-//Hibernate/HibernateMapping DTD 3.0//EN"  
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.    <class name="com.hibernate.pojo.User" table="t_user"lazy="true">  
  7.      <!--id标签用来映射主键字段-->  
  8.      <id name="username" column="username"length="20">   
  9.          <generatorclassgeneratorclass="assigned"/>  
  10.      </id>  
  11.   
  12.      <propertynamepropertyname="userpswd" column="userpswd" length="20"not-null="true"/>  
  13.    
  14.    </class>  
  15. </hibernate-mapping></span>  

5,编写dao

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">public class UserDao{  
  2.    public void insert(User user){          
  3.       //加载配置文件:classpath:hibernate.cfg.xml  
  4.       Configurationconfig = new Configuration().configure();  
  5.      //创建连接工厂  
  6.      SessionFactorysf = config.buildSessionFactory();  
  7.    
  8.      //会话对象,表示与数据库的连接会话过程  
  9.      Sessionsession = null;  
  10.      Transactiontx = null ;          
  11.      try{  
  12.          session= sf.openSession();  
  13.          //开启事务  
  14.          tx= session.beginTransaction();  
  15.    
  16.          session.save(user);//调用sava方法  
  17.    
  18.         //提交事务  
  19.         tx.commit();                          
  20.      }catch(Exceptione){  
  21.         e.printStackTrace();  
  22.         tx.rollback();  
  23.      }finally{  
  24.         if(session!=null){  
  25.             session.close();  
  26.         }  
  27.      }          
  28.   }  
  29. }</span>  


 

6,编写测试类

以上四步完成后就可以进行测试了,看配置的信息能否成功插入一条数据。

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">public static void  main(String args[]){  
  2.     Useruser = new User();  
  3.     user.setUsercode("zhangsan");  
  4.     user.setUserpswd("123");  
  5.     user.setOrgtype("1");  
  6.     user.setRegdate("2014-03-0711:56:00");  
  7.     user.setUsername("张三");  
  8.    
  9.    
  10.     UserDaodao = new UserDao();  
  11.     dao.insert(user);                  
  12. }</span>  


 为了测试么,我们直接newdao层对象,在实际项目中hibernate框架和spring框架和struts2框架结用,创建对象和组合对象的关系交给spring去完成。这样层与层之间就不会耦合了。

猜你喜欢

转载自blog.csdn.net/z1074907546/article/details/51791201
今日推荐