学习hibernate2——基本搭建

作者: JUNE言JUNE语 | 来源:发表于2016-06-27 11:51 被阅读133次

学习一个框架我觉得首先还是从项目学起,所以我从接触hibernate开始就尝试自己搭建一个hibernate项目。
本期项目的云盘地址:链接:http://pan.baidu.com/s/1jI750Vk 密码:9vgi

项目的结构

这里面主要 有两个配置文件和一个实体类

hibernate.cfg.xml

hibernate.cfg.xml是hibernate配置文件的标准命名,具体后面会讲,也可以将该配置文件命名为其他名字。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC   
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/h4
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
        <property name="show_sql">true</property>
        <mapping resource="com/h4/entity/Users.hbm.xml"/>      
    </session-factory>
</hibernate-configuration>

从这个配置文件可以看到,大致就是配置了相关的数据库连接的一些属性,包括登录数据库的用户名密码已经jdbc的jar包等等的属性
解释一下几个属性:
show_sql:是在控制台上显示sql语句,方便追踪
dialect:方言 ,代表你现在用的是什么数据库
mapping:对应映射的xml文件

该文件一般情况下放在根目录下,采用hibernate.cfg.xml这个标准命名。具体原因可以看一下代码。

//初始化hibernate的配置文件
Configuration configuration = new Configuration().configure();
可以看到configure有多个重载的方法 进入configure无参方法

从上面这个图可以看到,调用无参的configure方法,就是默认调用configure(String url)的方法,并传入"/hibernate.cfg.xml"这个参数进去

创建一个Users的实体类,跟数据库中的表一一对应。这就是ORM中的O,也就是Object。
在实体类中记住最重要是要创建一个无参构造方法。因为hibernate在生成实体类的时候是采用反射机制,所以必须有一个无参的构造函数。

Users.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC   
        '-//Hibernate/Hibernate Mapping DTD 3.0//EN'  
        'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>   
<hibernate-mapping>
    <class name="com.h4.entity.Users" table="users">
        <id name="id" type="java.lang.Integer">
            <column name="Id"></column>
            <generator class="native"></generator>
        </id>
        <property name="username" type="java.lang.String">
            <column name="UserName" length="50"></column>
        </property>
        <property name="password" type="java.lang.String">
            <column name="PassWord" length="50"></column>
        </property>
        <property name="age" type="java.lang.Integer">
            <column name="Age"></column>
        </property>
    </class>
</hibernate-mapping>

该配置文件中的id对应的是表的主键PK,而其他的property则对应表的其他属性。

测试

写一个测试类,有一个测试方法可以把users持久化。

public static void addUsers(){
    //这是4.x之前创建SessionFactory的方法,4.x之后采取另外一种方法
    //SessionFactory sf = new Configuration().configure().buildSessionFactory();
    
    SessionFactory sf = null;
    Configuration configuration = new Configuration().configure();
    
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
            .applySettings(configuration.getProperties())
            .buildServiceRegistry();
    
    sf = configuration.buildSessionFactory(serviceRegistry);
    
    Session s = null;   
    Transaction t = null;
    
    try{   
        //准备数据   
        Users um = new Users();   
        
        um.setUsername("h3");   
        um.setPassword("1234");
        um.setAge(1);   
        s = sf.openSession();   
        t = s.beginTransaction();   
        s.save(um);
       
        //Users users = (Users) s.get(Users.class, 1);
        //System.out.println(users.toString());
        t.commit();   
   }catch(Exception err){   
        t.rollback();   
        err.printStackTrace();   
  }finally{   
        s.close();   
  }
}

public static void main(String[] args) {
        
        Test.addUsers();
        
}

运行的结果如下

可以看到打印出来SQL语句,结果没有报错

查看数据库表

增加了一条记录

本节课就到这里啦
另外说明,本节课的源代码是跟下一节的源代码合在一起了,文件名为hibernate_2.zip

相关文章

网友评论

    本文标题:学习hibernate2——基本搭建

    本文链接:https://www.haomeiwen.com/subject/csrzdttx.html