• hibernate(1) —— 入门


       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文件,所以配置文件的名称不要更改。

     


    <?xmlversion="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>
         <!--配置连接数据库信息 -->
         <propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/egov</property>
         <propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
         <propertyname="hibernate.connection.username">egov</property>
         <propertyname="hibernate.connection.password">egov</property>
      
         <propertyname="show_sql">true</property>
         <propertyname="hibernate.format_sql">true</property>
         <propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
         <!--实体类的路径-->
         <mappingresource="com/hibernate/pojo/User.hbm.xml"/>
     
       </session-factory>
    </hibernate-configuration>
    

     

    4,配置映射文件

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

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

    
    
    <hibernate-mapping>
        <class name="beanname" table="tablename"/>
    </hibernate-mapping>
    
    
    

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

     

    实例:

    
    
    <?xmlversion="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"> 
             <generatorclass="assigned"/>
         </id>
    
         <propertyname="userpswd" column="userpswd" length="20"not-null="true"/>
     
       </class>
    </hibernate-mapping>
    
    
    
    

    5,编写dao


    
    
    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();
            }
         }        
      }
    }
    
    
    

     

    6,编写测试

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


    
    
    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);                
    }
    
    
    

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

  • 相关阅读:
    sqlserver 中的 substring函数(转)
    C#二个相减怎么获得天数,就是比如201225 与201231之间相差的天数
    C++文件添加到项目中
    VS2008动态链接库(DLL)的创建与导入
    美剧字幕绿箭侠第1季第7集
    C++中#define用法
    C++头文件的重复引用
    visual studio中解决方案是什么
    NewWords/300400
    指针
  • 原文地址:https://www.cnblogs.com/nin-w/p/6086714.html
Copyright © 2020-2023  润新知