【Hibernate】基础语义

18 篇文章 2 订阅
13 篇文章 0 订阅
【回顾】
    在上篇博客中,我们通过简单地保存用户数据实例,学习了如何进行Hibernate配置,从而建立实体类与数据库表的映射关系,在不用写执行语句的情况下,实现对数据库表的操作。
    本篇博客,将回到Hibernate的具体配置,了解一下配置中的一些基础语义。
【基础】
1. Configuration
    Configuration类负责管理Hibernate的配置信息。Hibernate运行时需要获取一些底层实现的基本信息。其中几个关键属性包括:
    数据库URL、数据库用户、数据库用户密码、数据库JDBC驱动类和数据库适配器(dialect)。
    这些属性都是在Hibernate配置文件(hibernate.hbm.xml)中加以设定,上篇博客的实例中也都用到了,具体代码如下:
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- mysql数据库连接驱动 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库连接地址 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
        <!-- 连接数据库用户名和密码 -->
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">123456</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    </session-factory>
</hibernate-configuration>
当我们调用:
    Configuration cfg = new Configuration().Configure();
时,Hibernate会自动在当前的ClassPath中搜寻hibernate.hbm.xml文件并将其加载至内存中,作为后继操作的基础配置。
    如果不希望用默认的hibernate.hbm.xml文件,我们也可以自己指定配置文件:
File file =new File("E:\\hibernate_first\\myhibernate.xml");   
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure(file);
2. SessionFactory
    SessionFactory负责创建session实例,我们可以通过Configuration实例来构建SessionFactory:
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();  
//建立SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
    Configuration实例cfg会根据当前的数据库配置信息,构造SessionFactory并返回。SessionFactory一旦构造完毕,即被赋予特定的配置信息。
    也就是说,之后cfg的任何变更将不会影响到已经创建的SessionFactory实例。如果需要使用基于改动后的实例,那么就需要从cfg中重新构建一个SessionFactory实例。同样,如果应用需要访问多个数据库,那么就需要针对每一个数据库,分别创建对应的SessionFactory实例。
    SessionFactory中保存了当前数据库配置的所有映射关系,同时也负责维护缓存。
3. session
    session是Hibernate持久化操作的基础。需要注意的是,这里的session和我们说的web层的session并没有关系。Hibernate Session对于Hibernate来说,就好比是JDBC Connection对于JDBC一样。
    session作为Hibernate管理核心,提供了众多持久化方法,如save、update、delete等。通过这些方法,我们就可以进行增删改查操作。
    而session是非线程安全的,一个session实例只可由一个线程使用。Session实例由SessionFactory构建:
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();  
//建立SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
//取得session
session = factory.openSession();
    之后我们就可以调用save、delete、update等方法。
Save:
    //新增一条用户数据
    User user = new User();
    user.setName("张三");
    user.setPassword("123");
    user.setCreateTime(new Date());
    user.setExpireTime(new Date());           
    //保存User对象
     session.save(user);
Get:
    //获取表中id为1的用户数据
    User user = (User)session.get(User.class, new Integer(1));
Delete:
    //获取表中id为1的用户数据
    User user= (User)session.get(User.class, new Integer(1));
    //删除该数据
    session.delete(user);  
【总结】
    通过本篇博客对Hibernate配置的基础学习,可以说对上篇博客中的代码实例理解得更加深刻了。学习就是这样一个过程:实践与理论互相补充。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值