zoukankan      html  css  js  c++  java
  • JavaWeb学习之Hibernate框架(一)

    一、框架是什么?

            1、框架是用来提高开发效率的;

            2、框架封装好了一些功能,我们需要使用这些功能时,调用即可,不需要再手动实现;

            3、框架可以理解为一个半成品的项目,只需要懂得如何驾驭这些功能即可。

    二、hibernate框架是什么?

               

    三、hibernate框架的好处

           操作数据库的时候,可以以面向对象的方式来完成,不需要书写SQL语句

    四、hibernate是一款orm框架

           orm:object  relational  mapping   对象关系映射

           数据库中的一张表就代表着一个实体类,一个实体类就代表着一个对象,那么对象关系映射就是把对象与数据库中的字段一一对应。

            

           orm分4级

            hibernate属于4级:完全面向对象操作数据库

            mybatis属于2级

            dbutils属于1级

    五、hibernate框架的搭建

           1、导包

                   

                   驱动包

                  

              2、创建数据库,准备表、实体

                   

               3、书写orm元数据(对象与表的映射配置文件)

                    导入约束:

                    

                    

                   实体:

                   

                  orm元数据:将实体中的所有成员都一一配置

                   

              4、书写配置文件    

    <?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>
    	<!--  #hibernate.dialect org.hibernate.dialect.MySQLDialect
                 #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
                 #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
                 #hibernate.connection.driver_class com.mysql.jdbc.Driver
                 #hibernate.connection.url jdbc:mysql:///test
                 #hibernate.connection.username gavin
                 #hibernate.connection.password-->
    	 <!--必须配置的5条 -->
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.url">jdbc:mysql:///crm?useUnicode=true&characterEncoding=UTF8</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">123456</property>
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    		<!--可选配置
    		#hibernate.show_sql true   自动打印sql在控制台
    		#hibernate.format_sql true  规范格式化打印在控制台的sql-->
    		<property name="hibernate.show_sql">true</property>
    		<property name="hibernate.format_sql">true</property>
    		<!-- 配置hibernate操作数据库隔离级别 -->
    		<!-- #hibernate.connection.isolation  4 -->
    		<property name="hibernate.connection.isolation">4</property>
    		<!-- 获得与当前线程绑定session对象时必须要配置的 -->
    		<property name="hibernate.current_session_context_class">thread</property>
    		<!-- 	如果没有表就会自动生成表,如果有就会自动更新表	
    		#hibernate.hbm2ddl.auto update -->
    		<property name="hibernate.hbm2ddl.auto">update</property>
            <mapping resource="com/domain/Customer.hbm.xml"/>
            <mapping resource="com/domain/LinkMan.hbm.xml"/>
            <mapping resource="com/domain/User.hbm.xml"/>
            <mapping resource="com/domain/Role.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration>
    

      5、书写代码测试

                 

    配置文件详解

    orm元数据

           根元素

            

           class元素

             

           id元素

             

            property元素

             

    hibernate主配置文件

            必须要配置的属性(5个)

            

           可选的属性配置(3个)

            

             元数据引入配置

             

    单元测试代码

    package com.domain;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    public class Demo {
    	@Test
    	public void saveCustomer(){
    		Configuration conf=new Configuration();
    		conf.configure();
    		//单例模式   例子
    		//工厂模式   例子
    		//代理模式   例子
    		//创建session的工厂对象
    		SessionFactory sessionFactory=conf.buildSessionFactory();
    		//会话(数据库   Connection)
    		Session session=sessionFactory.openSession();
    		//开启事务
    		Transaction tx=session.beginTransaction();
    		//保存客户信息
    		Customer c=new Customer();
    		c.setCust_name("aaa");
    		
    		session.save(c);
    		//提交事务
    		tx.commit();
    		//关闭session
    		session.close();
    		//关闭sessionFactory
    		sessionFactory.close();
    	}
    
    }
    

      

  • 相关阅读:
    C/C++字符串转换函数;
    MFC CTreeCtrl 递归遍历算法
    汉字转拼音
    Windows之权限讲解
    Ubuntu 保存文件时报E212
    ON_WM_MOUSEWHEEL无响应
    sln、db、opendb、vcxproj、filters、user文件跟踪说明
    iOS 9: UIStackView入门
    Swift语言Storyboard教程:第一部分
    springboot启动项目报错:ERROR:o.s.b.d.LoggingFailureAnalysisReporter解决办法
  • 原文地址:https://www.cnblogs.com/Java-125/p/9138095.html
Copyright © 2011-2022 走看看