您的位置:首页 > 其它

hibernate_01基本入门和基本配置

2017-06-15 11:37 489 查看
一、javaEE三层结构:
(1)web层,数据处理----struts2框架
(2)service层,业务处理逻辑----spring框架
(3)dao层,操作数据库,对数据库进行增删改查操作(crud)----hibernate框架

二、hibernate作用
[align=justify]hibernate对jdbc进行封装,使用hibernate实现对数据库crud操作,jdbc代码简单。[/align]
[align=justify](1)使用jdbc需要写sql语句,使用hibernate不需要写sql语句[/align]

(2)使用hibernate自动帮创建数据库表

三、ORM
1 hibernate概念

(1)orm思想:Object Relational Mapping----* 对象关系映射
[align=justify]* 让实体类名称和表名称对应[/align]

* 让实体类属性和表里面字段对应

[align=justify]2 hibernate环境搭建[/align]
[align=justify](1)搭建环境过程[/align]

(2)映射配置(重点)
     a.User.hbm.xml

<hibernate-mapping>

    <!--
实体类和表名称对应

       name:实体类全路径

       table:
对应数据库表名称

    -->

    <class
name="cn.itcast.entity.User"
table="t_user">

       <!--
配置id对应 是主键

           name:
实体类属性名称

           column:
表字段名称

       -->

       <id
name="uid"
column="uid">

           <!--
配置主键生成策略  自动增长 第二天详解-->

           <generator
class="native"></generator>

       </id>

       <!--
其他字段和属性对应-->

       <property
name="username"
column="username"></property>

       <property
name="password"
column="password"></property>

       <property
name="address"
column="address"></property>

    </class>

</hibernate-mapping>

b.hibernate.cfg.xml

     <session-factory>

          <!--
配置hibernate基本信息(可选的)
-->

       <property
name="hibernate.show_sql">true</property>

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

       

       <!--

           hibernate帮创建数据库表

       none:默认值,不创建表

       create-drop: 如果有表,删除再创建,如果没有表创建

       create:如果没有表创建,如果有表,再创建表

       update:如果数据库没有表,创建表,如果存在表,更新

       validate:这个值不能创建表做校验,实体类属性和表字段个数一样,对应

       -->

       <property
name="hibernate.hbm2ddl.auto">update</property>

       

       <!--
配置数据库方言

           mysql做分页使用limit,limit只能使用mysql数据库里面

           oracle做分页rownumrownum只能使用oracle数据库里面

        -->

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

     <!-- 引入映射文件 -->

         <mapping
resource="com/cy/entity/User.hbm.xml"
/>

 </session-factory>

四、Hibernate工具类

创建sessionFactory对象过程中做很多事情,问题:效率很低,耗资源

让sessionFactory创建一次就可以了,类似于ServletContext对象

写工具类,使用静态代码块实现

public
class
HibernateUtils {
    static
Configuration
cfg
=
null;
    static
SessionFactory
sessionFactory
=
null;
[align=left]    //静态代码块[/align]
    static
{
       cfg
=
new
Configuration();
[align=left]       cfg.configure();[/align]
       sessionFactory
=
cfg.buildSessionFactory();
[align=left]    }[/align]
[align=left]    [/align]
[align=left]    //提供返回sessionFactory的方法[/align]
    public
static
SessionFactory
getSessionFactory() {
       return
sessionFactory;
[align=left]    }[/align]

}

*(重点)五、hibernate的增删改操作(crud)---session里的方法
1.增--save
2.删除--delete
3.改--update
4.查--get/load
     load是什么时候用什么时候调用SQL语句
[align=justify]get方法和load方法区别[/align]
[align=justify](1)load方法功能和get方法一样的,根据主键id查询[/align]
[align=justify](2)区别:[/align]
[align=justify]* load方法做延迟查询:什么时候使用,什么时候查询数据库[/align]

* get方法做立即查询:调用get方法在控制台马上发送sql语句查询数据库

六、sessionFactory对象
     1.

          Configuration
cfg =
new Configuration();

          cfg.configure();

          SessionFactory
sessionFactory =
cfg.buildSessionFactory();

       

     2.创建sessionFactory对象

[align=left]        * (1)首先找到数据库部分,连接数据库[/align]

        * (2)
看是否需要自动创建表,如果不需要创建表,直接返回sessionFactory对象

        * (3)
如果发现需要自己创建表,找到映射文件,根据配置映射关系在数据库把表创建

七、session对象
     

        //(3)创建session对象(类似于jdbc的connection)

       Session
session
= sessionFactory.openSession();
 

a.Session对象类似于jdbc里面Connection连接

b.调用session对象里面的方法实现crud操作

 

八、transaction对象

       //(4)开启事务

       Transaction
tx
=
session.beginTransaction();

[align=justify]1 作用[/align]

(1)代表事务

a.开启事务:Transaction tr = session.beginTransaction();
b.提交事务:tr.commit();
c.回滚事务:tr.rollback();

[align=justify]2 hibernate建议手动开启事务,不开启事务做操作[/align]
[align=justify](1)在hibernate5.x可以不开启事务做操作[/align]

(2)在hibernate3.x,必须开启事务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: