hibernate 入门

Hibernate(开放源代码的对象关系映射框架)

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

 

Hibernate的核心类和接口

Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、

Transaction、Query、Criteria和Configuration。这6个核心类和接口在任何开发中都会用到。不仅可以对持久化对象进行存取,还能够进行事务控制。

 

 

 

Hibernate版本

关于hibernate5,只支持对jdk1.8及其以上版本

 

 

 

hibernate工作原理:

1、通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件

2、由hibernate.cfg.xml中的<mappingresource="com/xx/User.hbm.xml"/>读取解析映射信息。

3、通过config.buildSessionFactory();//得到sessionFactory。

4、sessionFactory.openSession();//得到session。

5、session.beginTransaction();//开启事务。

6、persistent operate;

7、session.getTransaction().commit();//提交事务

8、关闭session;

9、关闭sessionFactory;

 

hibernate优点:

1、封装了jdbc,简化了很多重复性代码。

2、简化了DAO层编码工作,使开发更对象化了。

3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。

4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。


Hibernate与数据库的基本连接信息的配置方式有两种方式:

第一种是使用hibernate.properties文件作为配置文件。

第二种是使用hibernate.cfg.xml文件作为配置文件。

1. 使用hibernateproperties作为配置文件

        对于hibernate.properties作为配置文件的方式,比较适合于初学者。因为初学者往往很难记住xml配置文件的格式,以及需要配置哪些属性。在Hibernate发布包的etc路径下,提供了一个hibernate.properties文件,该文件列出了Hibernate 的所有属性。每个配置段都给出了大致的注释,用户只要取消所需配置段的注释,就可以快速配置Hibernate和数据库的链接此处给出使用hibernate.properties文件创建Configuration对象的方法。

//实例化configuration对象 

Configuration cfg = new Configuration() 

//多次调用addResource()方法,添加映射文件 

cfg.addResource("Item.hbm.xml") 

cfg.addResource("Bid.hbm.xml"); 

查看hibernate.properties文件发现,该文件没有提供Hibernate映射文件的方式。因此使用hibernate.properties文件来作为配置文件时,必须使用Configuration的.addResource()方法,使用该方法来添加映射文件。

 

注意:正如上面的代码所示,使用hibernate.properties文件配置Hibernate的属性固然简单,但是因为要手动添加映射文件,当映射文件极其多时,这是一件非常催人泪下的事情。这也就是在实际开发中,不常使用hibernate.properties文件作为配置文件的原因。

 

     当然还有另一种添加配置文件的策略,因为映射文件和持久化类是一一对应的,可以通过Configuration对象来添加持久化类,让Hibernate自己来搜索映射文件。

//实例化configuration对象  

Configuration cfg = new Configuration() 

//多次调用addClass()方法,直接添加持久化类  

cfg .addClass(ppp.Item.class) 

cfg .addClass(ppp.BId.class); 

 

 

2. 使用hibernate.cfg.xml作为配置文件

       关于xml配置形式,我感觉也没必要多说什么。下面的一个例子足以把这种配置说明清楚,下面我们一起来看一个带有详细注释的hibernate.cfg.xml文件:

 

 

    <!--连接数据库是用户名-->

         <property name="hibernate.connection.username">root</property>

    <!--连接数据库是密码-->

         <property name="hibernate.connection.password">123456</property>        

    <!--数据库连接池的大小-->

         <propertyname="hibernate.connection.pool.size">20</property>

    <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可

以设置为false,提高运行效率-->


         <propertyname="hibernate.show_sql">true</property>
       
   <!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。FetchSize设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->

         <propertyname="jdbc.fetch_size">50</property>


   <!--jdbc.batch_size是指Hibernate批量插入,删除和更新时每次操作的记录数。BatchSize越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样

耗用内存就越大-->


         <propertyname="jdbc.batch_size">23</property>
 

   <!--jdbc.use_scrollable_resultset是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助-->

         <propertyname="jdbc.use_scrollable_resultset">false</property>

 
   <!--connection.useUnicode连接数据库时是否使用Unicode编码-->

         <propertyname="Connection.useUnicode">true</property>
 

   <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全-->

         <propertyname="connection.characterEncoding">gbk</property>     
       

         <!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。-->

          <property  name="hibernate.dialect">

org.hibernate.dialect.MySQLDialect</property>

    <!-是否自动创建数据库表  他主要有一下几个值:

  validate:当sessionFactory创建时,自动验证或者schema定义导入数据库。

  create:每次启动都drop掉原来的schema,创建新的。

  create-drop:当sessionFactory明确关闭时,drop掉schema。

  update(常用):如果没有schema就创建,有就更新。

-->


         <propertyname="hbm2ddl.auto">create</property>

 

<!配置此处 sessionFactory.getCurrentSession()可以完成一系列的工作,当调用时,
hibernate将session绑定到当前线程,事务结束后,hibernate
将session从当前线程中释放,并且关闭session。当再次调用getCurrentSession
()时,将得到一个新的session,并重新开始这一系列工作。-->


<propertyname="current_session_context_class">thread</property>


<!--指定映射文件为“hibernate/ch1/UserInfo.hbm.xml”-->         

           <mappingresource="org/mxg/UserInfo.hbm.xml">

  </session-factory>

 </hibernate-configuration>  

     以上应该是大部分常用的配置文件属性,当然里面的很多部分都是可以在配置hibernate开发环境时自动生成的,刚开始的时候还是建议大家手动的去配置一下,可以达到熟悉的的时候在用自动生成

 

 对象-关系映射

下面我们继续看一下包含了Hibernate的基本映射信息的配置文件,也就是系统中每一个类与其对应的数据库表之间的关联信息,这种配置文件一般命名为:类名.hbm.xml,下面我们通过一个具体的代码示例来看一下类名.hbm.xml的结构:

<!--package 对包文件进行映射   -->
<hibernate-mapping package="com.my.bean">

 


<!--对哪个实体bean进行映射  name必须对应的类的名字  table对应你要映射的表名 -->
  <!--  table和 column 可以省略,默认:表对应类名, 列名:对应对象属性-->
   <class name="Student" table="t_student">


   <!--对应的标识符, id对应属性的id(标识符) type 可选择项-->
   <id name="id" column="sid" type="java.lang.Integer">


   <!--配置主键的生成策略  hibernate自动增长id -->
    <generator class="increment"></generator>
   </id>
    <property name="name" column="name" type="java.lang.String" ></property>
    <property name="birthday" column="birthday"></property>
 </class>

 
</hibernate-mapping>   
 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值