您的位置:首页 > 其它

Hibernate框架学习(一 )

2016-04-21 09:11 393 查看
 hibernate框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作hibernate框架。

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

一:映射

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

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

 


 

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



 

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



 

二:使用

1,环境配置

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



 

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

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

 

3,配置hibernate.cfg.xml文件

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

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

 

[html] view
plain copy

 print?





<span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>  

<!DOCTYPEhibernate-configuration PUBLIC  

"-//Hibernate/HibernateConfiguration DTD 3.0//EN"  

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  

   

<hibernate-configuration>  

   <session-factory>  

     <!--配置连接数据库信息 -->  

     <propertynamepropertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/egov</property>  

     <propertynamepropertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  

     <propertynamepropertyname="hibernate.connection.username">egov</property>  

     <propertynamepropertyname="hibernate.connection.password">egov</property>  

    

     <propertynamepropertyname="show_sql">true</property>  

     <propertynamepropertyname="hibernate.format_sql">true</property>  

     <propertynamepropertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  

     <!--实体类的路径-->  

     <mappingresourcemappingresource="com/hibernate/pojo/User.hbm.xml"/>  

   

   </session-factory>  

</hibernate-configuration></span>  

4,配置映射文件

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

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

[html] view
plain copy

 print?





<span style="font-size:18px;"><hibernate-mapping>  

    <class name="beanname" table="tablename"/>  

</hibernate-mapping>  

 </span>  

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

 

实例:

[html] view
plain copy

 print?





<span style="font-size:18px;"><?xmlversionxmlversion="1.0" encoding="UTF-8"?>  

<!DOCTYPEhibernate-mapping PUBLIC  

"-//Hibernate/HibernateMapping DTD 3.0//EN"  

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

<hibernate-mapping>  

   <class name="com.hibernate.pojo.User" table="t_user"lazy="true">  

     <!--id标签用来映射主键字段-->  

     <id name="username" column="username"length="20">   

         <generatorclassgeneratorclass="assigned"/>  

     </id>  

  

     <propertynamepropertyname="userpswd" column="userpswd" length="20"not-null="true"/>  

   

   </class>  

</hibernate-mapping></span>  

5,编写dao层

[java] view
plain copy

 print?





<span style="font-size:18px;">public class UserDao{  

   public void insert(User user){          

      //加载配置文件:classpath:hibernate.cfg.xml  

      Configurationconfig = new Configuration().configure();  

     //创建连接工厂  

     SessionFactorysf = config.buildSessionFactory();  

   

     //会话对象,表示与数据库的连接会话过程  

     Sessionsession = null;  

     Transactiontx = null ;          

     try{  

         session= sf.openSession();  

         //开启事务  

         tx= session.beginTransaction();  

   

         session.save(user);//调用sava方法  

   

        //提交事务  

        tx.commit();                          

     }catch(Exceptione){  

        e.printStackTrace();  

        tx.rollback();  

     }finally{  

        if(session!=null){  

            session.close();  

        }  

     }          

  }  

}</span>  

 

6,编写测试类

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

[java] view
plain copy

 print?





<span style="font-size:18px;">public static void  main(String args[]){  

    Useruser = new User();  

    user.setUsercode("zhangsan");  

    user.setUserpswd("123");  

    user.setOrgtype("1");  

    user.setRegdate("2014-03-0711:56:00");  

    user.setUsername("张三");  

   

   

    UserDaodao = new UserDao();  

    dao.insert(user);                  

}</span>  

 为了测试么,我们直接new的dao层对象,在实际项目中hibernate框架和spring框架和struts2框架结用,创建对象和组合对象的关系交给spring去完成。这样层与层之间就不会耦合了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate