zoukankan      html  css  js  c++  java
  • 10/19 duiHibernate 的复习总结

    每日对Hbernate 的复习
    hibernate 简介:

    hibernate 是一个开源框架,它是面想对象的一个开源框架,它对JDBC做了轻量级的封装,而我们java程序员
    可以使用面向对象的思想来操纵数据库

    一 为什么要使用Hibernate

    1.对jdbc访问数据库的代码做了封装,大大简化了数据访问层的繁琐的重复性代码

    2.Hibernate是一个基于jdbc的主流框架,这是一个优秀的orm实现,他很大程度简化了dao层的编码工作

    二 Hibernate框架的优缺点?

    1.Hibernate 功能强大,是java应用关系数据库之间的桥梁,较之jdbc方式操作数据库,代码量大大减少,提高了持久化的代码

    降低了维护成本

    2.可移植性好。对于修改 /更换 数据库,通常只修改Hibernate配置文件即可

    缺点:

    不适合大场地

    修改删除不适合用hibernate
    步骤1 搭配之构建jdbc
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <!--根节点-->
    <hibernate-configuration>
    <session-factory>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
    <property name="connection.username">happy1</property>
    <property name="connection.password">happy1</property>
    <!-- SQL dialect SQL方言 -->
    <property name="dialect"> org.hibernate.dialect.Oracle10gDialect</property>
    <!-- Enable Hibernate's automatic session context management session和当前线程绑定-->
    <!--
     如果在Hibernate配置文件中,参数current_session_context_class设置为thread,并采用SessionFactory的getCurrentSession()方法获得Session对象,则不需要执行session.close()方法。
    -->
    <property name="current_session_context_class">thread</property>
    <!--打印sql 控制台-->
    <property name="show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <!--自动构建表结构 create 先delete表结构 再创建,update直接更新表结构-->
    <!-- update 加载hibernate自动更新数据库结构 -->
    <property name="hbm2ddl.auto">update</property>
    <!--关联entity--><!--找小配置-->
    <!-- <mapping resource="cn/happy/entity/Dog.hbm.xml"/>-->
    <!-- <mapping resource="cn/hql/entity/demp.hbm.xml"/>
    <mapping resource="cn/hbm02/dynamic/Emp.hbm.xml"/>-->
    <!--<mapping resource="cn/hbm03happ/manyone/Dept.hbm.xml"/>
    <mapping resource="cn/hbm03happ/manyone/Emp.hbm.xml"/>-->
    <!-- <mapping class="cn.hbm07.People"/>
    <mapping class="cn.hbm07.Card"/>-->
    <!-- <mapping resource="cn/hbm03happ/onetomanydouble/Dept.hbm.xml"></mapping>
    <mapping resource="cn/hbm03happ/onetomanydouble/Emp.hbm.xml"></mapping>
    <mapping resource="cn/hbm03happ/manytomany/Employee.hbm.xml"></mapping>
    <mapping resource="cn/hbm03happ/manytomany/Project.hbm.xml"></mapping>-->
    <!-- <mapping class="cn.hbonetomany.Dept"/>
    <mapping class="cn.hbonetomany.Emp"/>-->
    <mapping class="cn.hbmanytomany.Student"/>
    <mapping class="cn.hbmanytomany.Teacher"/>
    </session-factory>
    </hibernate-configuration>


    主键生成策略 :


    identity

    identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。

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

    <generator class="identity" />

    </id>

    特点:只能用在支持自动增长的字段数据库中使用,如MySQL。

    注释方式与配置文件底层实现方式相同,只是配置的方式换成了注释方式

    自动增长,适用于支持自增字段的数据库

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)


    native

    native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。

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

    <generator class="native" />

    </id>

    @Test
    public void test03(){
    //Configuration 接口类 可以new
    Configuration cfg=new Configuration().configure();//1
    //session对象
    SessionFactory factory=cfg.buildSessionFactory(); //2
    Session session = factory.openSession(); //3

    Dog dog=session.load(Dog.class,1);
    System.out.println(dog.getDogname());
    session.close();
    /*
    * 所有增删改操作
    * */
    }

  • 相关阅读:
    Designing With Web Standard(一)
    再听姜育恒
    终于找到Effective C Sharp电子版了
    继续下一个题目
    想做就做,要做得漂亮
    空悲还是空杯
    整理,中庸
    分布式系统设计随想
    日志log4
    log4net更换目录
  • 原文地址:https://www.cnblogs.com/hualishu/p/7693248.html
Copyright © 2011-2022 走看看