Hibernate的介绍、安装、配置和应用

Hibernate技术深度解析 Hibernate 支持 HQL(Hibernate Query Language)和 Criteria API 两种查询方式,允许开发者编写更灵活、更复杂的查询语句。 阅读详情

一、Hibernate介绍:

Hibernate是一个JDO工具。它的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样,我们只需要通过操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的编码工作节省了大量的劳动。Hibernate提供的HQL是一种类SQL语言,它和EJBQL一样都是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL。

Hibernate基础代码包括:

1. POJO

POJO 在Hibernate 语义中理解为数据库表所对应的Domain Object。这里的POJO就是所谓的“Plain Ordinary Java Object”,字面上来讲就是无格式普通Java 对象,简单的可以理解为一个不包含逻辑代码的值对象(Value Object 简称VO)。

一个典型的POJO:

public class TUser implements Serializable {

private String name;

public TUser(String name) {

this.name = name;

}

/** default constructor */

public TUser() {

}

public String getName() {

return this.name;

}

public void setName(String name) {

this.name = name;

}

}

2. Hibernate 映射文件

Hibernate 从本质上来讲是一种“对象-关系型数据映射”(Object Relational

Mapping 简称ORM)。前面的POJO在这里体现的就是ORM中Object层的语义,

而映射(Mapping)文件则是将对象(Object)与关系型数据(Relational)相关联的纽带,在Hibernate中,映射文件通常以“.hbm.xml”作为后缀。

二、Hibernate的安装:

       (1)下载Hibernate3包并解压解压后的目录是hibernate-3.1,目录结构如图:

 

 

使用hibernate主要是要用目录lib中的jar包:

 

下面这个表对每个jar包的作用做了描述

 

(2)下载安装eclipse的hibernate插件Hibernate Synchronizer(最新版本为3.1.9),下载压缩包HibernateSynchronizer-3.1.9.zip,解压到eclipse目录,重启eclipse即可使用此插件。

使用此插件的方便之处:

可以根据数据库的连接url或者是数据源连接自动生成hibernate配置文件hibernate.cfg.xml;可以根据数据库中的表生成hibernate数据库表映射文件*.hbm.xml(*代表数据库表名称);可以将*.hbm.xml映射添加到hibernate配置文件中;根据*.hbm.xml自动生成对应的POJO代码。省去了大量的手工编写代码时间,并且可以尽量避免手写代码产生的输入错误。

三、Hibernate配置

       无需特殊配置,只需在使用Hibernate的工程中将lib目录中的jar包加入到工程的构建路径中。

四、Hibernate应用

使用一个简单的例子说明Hibernate的应用:

1、在MySql中新建一个数据库schoolproject,创建一个表sudent,表中有三个字段id(varchar(32) 默认值为空)、Name(varchar(10)不可空)、Age(tinyint 可空)。

2、打开eclipse新建一个java项目,输入项目名称TestHibernate,下一步,配置工程的源文件夹为src,输出文件夹为classes,将Hibernate安装中所说的lib中的jar包加入到工程的构建路径中,并需要将MySql的jdbc驱动jar包(mysql-connector-java-3.1.13-bin.jar、mysql-connector-java-3.1.13-bin-g.jar)加入路径中,完成。

3、在源文件夹src中新建一个Hibernate配置文件,如图选择Hibernate Configuration File:

 

点击下一步,出现如下对话框:

 

Database Type选择MySQL,connection选项中有两种连接方式,第一种为URL连接,第二种是数据源连接,在这里我们使用第一种方式,输入Database URL:jdbc:mysql://localhost:3306/schoolproject,输入数据库连接的用户名和密码,完成。此时便自动生成了hibernate配置文件hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

 

<hibernate-configuration>

    <session-factory >

 

        <!-- local connection properties -->

        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/schoolproject</property>

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

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

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

        <!-- property name="hibernate.connection.pool_size"></property -->

 

        <!-- dialect for MySQL -->

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

 

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

        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

    </session-factory>

</hibernate-configuration>

在此,我们将<property name="hibernate.show_sql">false</property>中的false修改成true,是为了能够显示操作数据库时产生的sql语句。

4、我们再在src中建立一个包model用来存放产生的POJO文件,在包中新建一个Hibernate映射文件,在model上点击右键——>新建——>其他,选择Hibernate Mapping File:

 

在对话框中输入数据库连接密码,点击refresh即可将数据库中扫描出数据库中的所有表,选择sudent,选择package为model;

 

 

在Properties选项卡中将ID Generator修改成uuid.hex(自动产生主键,如果要自己指定主键可以修改成assigned),完成。此时在包model中便产生了我们的表sudent所对应的数据库映射文件Sudent.hbm.xml。

 

5、在Student.hbm.xml上点击右键,进行如下操作:

 

此时产生了表对应的POJO文件BaseStudent.java(自动产生的base包中)和Student.java,接下来我们将表的映射文件在hibernate配置文件中做映射,修改后的hibernate.cfg.xml内容如下(红色部分为加入部分):

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- local connection properties -->

        <property name="hibernate.connection.url">

            jdbc:mysql://localhost:3306/schoolproject

        </property>

        <property name="hibernate.connection.driver_class">

            com.mysql.jdbc.Driver

        </property>

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

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

        <!-- property name="hibernate.connection.pool_size"></property -->

        <!-- dialect for MySQL -->

        <property name="dialect">

            org.hibernate.dialect.MySQLDialect

        </property>

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

        <property name="hibernate.transaction.factory_class">

            org.hibernate.transaction.JDBCTransactionFactory

        </property>

        <mapping resource="model/Sudent.hbm.xml" />

    </session-factory>

</hibernate-configuration>

6、此时我们便可以编写一个测试范例来测试一下我们的例子,在源文件夹src中新建一个类包名为testhibernte,类名为TestHibernate,TestHibernate.java的内容如下:

package testhibernate;

 

import org.hibernate.*;

import org.hibernate.cfg.*;

import model.Sudent;

public class TestHibernate {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO 自动生成方法存根

        try{

            SessionFactory sf = new Configuration().configure().buildSessionFactory();

            Session session = sf.openSession();

            Transaction tx = session.beginTransaction();

            for(int i=1;i<=10;i++){

                Sudent st = new Sudent();

                st.setName("学生"+i);

                st.setAge("22");

                session.save(st);

            }

            tx.commit();

            session.close();

            System.out.println("数据插入成功,请查看数据库!");

        }catch(HibernateException e){

            e.printStackTrace();

        }

 

    }

 

}

将此类作为java应用程序运行,控制台出现如下的提示信息:

 

 

 

我们查看数据库表中多了10条数据,说明我们的操作成功。

 

 

 

7、在hibernate中调用存储过程,例如我们建立一个存储过程GetAllinfo,内容为:

Create procedure GetAllinfo()

Select * from sudent;

修改hibernate映射文件(Sudent.hbm.xml)为:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

 

<hibernate-mapping package="model">

    <class

        name="Sudent"

        table="sudent"

    >

        <meta attribute="sync-DAO">false</meta>

        <id

            name="Id"

            type="string"

            column="id"

        >

            <generator class="uuid.hex"/>

        </id>

 

        <property

            name="Name"

            column="Name"

            type="string"

            not-null="true"

            length="10"

        />

        <property

            name="Age"

            column="Age"

            type="java.lang.String"

            not-null="false"

            length="3"

        />

 

 

    </class>

    <sql-query callable="true" name="getAllInfo">

        <return alias="student" class="model.Sudent">

            <return-property name="Name" column="Name"></return-property>

            <return-property name="Age" column="Age"></return-property>

        </return>

        {call GetAllinfo()}

    </sql-query>

</hibernate-mapping>

修改TestHibernate.java为:

package testhibernate;

 

import java.util.List;

 

import org.hibernate.*;

import org.hibernate.cfg.*;

import org.hibernate.classic.Session;

import model.Sudent;

public class TestHibernate {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO 自动生成方法存根

        try{

            SessionFactory sf = new Configuration().configure().buildSessionFactory();

            Session session = sf.openSession();

            //String hql = "from sudent";

           

            //session.delete(hql);

            Query query = session.getNamedQuery("getAllInfo");//存储过程

            //query.setInteger("age",22);

            List su = query.list();

            for(int i=0;i<su.size();i++){

                Sudent st = (Sudent)su.get(i);

                System.out.println(st.getName()+"/t"+st.getAge());

            }

            session.close();

            System.out.println("数据查询成功!");

        }catch(HibernateException e){

            e.printStackTrace();

        }

 

    }

 

}

执行后控制台显示信息:

 

 

 

 

说明调用存储过程成功。

8、使用SQL语句

修改hibernate映射文件(Sudent.hbm.xml)为:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

 

<hibernate-mapping package="model">

    <class

        name="Sudent"

        table="sudent"

    >

        <meta attribute="sync-DAO">false</meta>

        <id

            name="Id"

            type="string"

            column="id"

        >

            <generator class="uuid.hex"/>

        </id>

……

    </class>

    <sql-query name="selectUser">

        <![CDATA[select {stu.*} from sudent stu where stu.Age>:age]]>

        <return alias="stu" class="model.Sudent"></return>

    </sql-query>   

</hibernate-mapping>

修改TestHibernate.java为:

package testhibernate;

 

import java.util.List;

 

import org.hibernate.*;

import org.hibernate.cfg.*;

import org.hibernate.classic.Session;

import model.Sudent;

public class TestHibernate {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO 自动生成方法存根

        try{

            SessionFactory sf = new Configuration().configure().buildSessionFactory();

            Session session = sf.openSession();

            Query query = session.getNamedQuery("selectUser");

            query.setInteger("age",22);

            List su = query.list();

            for(int i=0;i<su.size();i++){

                Sudent st = (Sudent)su.get(i);

                System.out.println(st.getName()+"/t"+st.getAge());

            }

            session.close();

            System.out.println("数据查询成功!");

        }catch(HibernateException e){

            e.printStackTrace();

        }

 

    }

 

}

执行后控制台显示信息:

 

 

 

 

说明SQL语句执行成功。

9、使用HQL语句

修改TestHibernate.java代码为:

package testhibernate;

 

import java.util.List;

 

import org.hibernate.*;

import org.hibernate.cfg.*;

import org.hibernate.classic.Session;

import model.Sudent;

public class TestHibernate {

………………//代码未变

            String hql = "from sudent where Name=’徐军’";

            Query query = session.createQuery(hql);        

………………//代码未变

}

执行后控制台显示信息如下:

 

 

 

 

 

说明HQL语句执行成功。

以上就是对Hibernate的基本介绍及其安装配置,并有一个简单的例子应用,具体到一些深奥的技术需要以后慢慢学习。

 

 

 
3、构建一个简单的Hibernate应用程序 本文详细介绍了如何构建一个简单的Hibernate应用程序,涵盖从安装必要工具到创建持久化类和对象映射的全过程。通过具体示例(如消息示例和在线广告牌应用程序),展示了如何使用Hibernate进行数据持久化操作,包括会话管理、对象映射以及数据库表的创建与交互。 阅读详情

相关推荐

Hibernate3库在Eclipse中的全面应用教程

Hibernate3作为Java对象关系映射(ORM)解决方案的重要成员,在Java持久化领域中占有举足轻重的地位。自从2001年首次发布以来,Hibernate不断进化,已成为许多Java项目中不可或缺的组件之一。它使得开发者能够以面向对象的方式来操作关系数据库,极大地降低了数据库操作的复杂性,并提高了代码的可维护性和可移植性。Hibernate的API设计使得开发者能够以面向对象的方式进行数据库操作,同时保持了与数据库的无缝集成。

weixin_35755188的博客 915

Hibernate框架【一】——HIbernate框架介绍

Hibernate是一个开源的Java对象关系映射(ORM)框架,它提供了一种方便的方式将Java对象与关系型数据库进行映射和交互。通过Hibernate,开发人员可以使用面向对象的方式操作数据库,而不需要直接编写SQL查询语句。

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1万+

从SGX到TDX:英特尔机密计算的技术演进与选型指南

本文深入解析了英特尔两代机密计算技术SGX与TDX的核心差异与选型策略。SGX提供应用级飞地隔离,安全等级高但开发复杂;TDX提供虚拟机级信任域保护,兼容性好且易于部署。文章结合金融与医疗行业实战案例,为开发者提供了清晰的选型指南,帮助根据代码可改性、安全需求、部署规模及生态成本选择最合适的机密计算方案。

java5的博客 420

Hibernate简单讲解

所谓的ORM就是利用描述对象和数据库表之间映射的元数据,自动把java应用程序中的对象持久化到关系型数据库的表中。通过操作java对象,就可以完成对数据库表的操作。可以把ORM理解为关系型数据和对象的一个纽带,开发人员只需关注纽带一段映射的对象即可。Hibernate框架使用ORM思想对数据库进行crud操作在web阶段学习的javabean,更准确的叫法应该是实体类ORM:Object Relational Mapping,对象关系映射。让实体类和数据库表对应,让实体类属性和表中字段对应。

weixin_42694511的博客 5026

【IPAM】Netbox docker模式版本升级

NETBOX 是一个开源的网络资源管理系统,主要用于管理 IP 地址、机架、设备、接口等网络资源信息。下面是 NETBOX 的功能、优点和缺点的详细介绍。

u012153104的博客 1329

STM32的DMA模块及Protues仿真实验

(一)DMA简介      DMA(Direct Memory Access,直接存储器访问), 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可 供其它操作使用。      STM32F407共有两个 DMA 控制器,总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理 一个或多

weixin_45930204的博客 2850

hibernate框架简介

目录 一、 历史与背景 1. 应用程序的分层体系结构 2. 持久化层(如图1右) (1)什么叫持久化? (2)什么叫持久层? (3)为什么要持久化?增加持久层的作用是什么? (4)目前在持久化层领域,实现模式有以下几种: 3. ORM介绍 二、Hibernate定义 三、Hibernate的作用 四、Hibernate的应用 五、Hibernate API简介 1.Hibernate API中的接口可以分为以下几类: 2. Hibernate的核心接口框图 六 Hib...

renxingzhadan的专栏 7923

PyQt5混搭qfluentwidgets实战:用FramelessWindow快速打造现代化界面

本文详细介绍了如何将PyQt5与qfluentwidgets组件库结合,利用FramelessWindow快速打造现代化无边框界面。通过环境配置、核心特性解析、组件混用技巧及高级样式定制,帮助开发者提升桌面应用的用户体验和美观度,特别适合需要现代UI设计的Python开发者。

sugar的博客 969

Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以

李阿昀的博客 12万+

SAP MM自动化进阶:STO交货单自动创建的配置与优化

本文深入解析了SAP MM模块中实现公司间库存调拨订单(STO)交货单自动创建的完整配置流程与优化策略。通过激活自动交货与绑定发货点两大核心配置,打通自动化链路。重点探讨了如何集成ATP可用性检查以智能处理库存不足等异常场景,确保自动化流程的可靠性与业务贴合度,并提供了进阶监控与问题排查方法,助力企业显著提升供应链效率。

weixin_29206669的博客 124

ATR2660:卫星导航高增益低噪声放大器芯片数据手册

中国BDS(北斗卫星导航系统),美国的GPS,俄罗斯的GLONASS和欧盟的GALILEO导航系统应用而专门设计。芯片支持3.3V至5V宽电源供电。采用2级放大器的结构设计,具有28dB高增益和0.85dB的低噪声系数。支持BDS、GPS、GALILEO、GLONASS等L。典型功率增益:30dB@5V;典型输入P1dB:-18dBm@3.3V;典型工作电流:12.7mA@3.3V;宽供电电压范围:3.3V~5V;典型噪声系数:0.85dB;频段的多个卫星导航系统;ATR2660是一颗。

YHPsophie的博客 560

Hibernate应用 安装配置

Hibernate应用 一、引入 1、  模型不匹配(阻抗不匹配) Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。 2、  解决办法 (1)       使用JDBC手工转换 (2)       使用ORM(Object Relation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、

681

使用 WSL 在 Windows 上安装 Linux

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

隔壁老瓦的专栏 2872

Liquibase Hibernate 集成项目教程

Liquibase Hibernate 集成项目教程 项目介绍 Liquibase Hibernate 是一个用于连接 Hibernate 的 Liquibase 扩展。该扩展允许您使用 Hibernate 配置作为比较数据库,以便在 Liquibase 中进行 diff、diffChangeLog 和 generateChangeLog 操作。Hibernate 是一个对象-关系映射(ORM)工...

gitblog_00729的博客 901

Scrapy爬虫之热门网站数据爬取--------第2关

第2关:小说网站玄幻分类第一页小说爬取 任务描述 本关任务:爬目标网页的3本小说保存到本地MySQL数据库,目标网页为全书网玄幻分类首页。 注:考虑到单机(非分布式)爬虫的爬取时间和测试平台的压力,我们不爬更多页数的小说了,可以作为课下作业自己完善。 xpath匹配:循环获取相同标签下的内容 通过网页分析,我们在获取小说的章节名时,发现他们都在标签<DIV class="clearfix dirconone">下的li的a中: 这时,我们可以先把其中所有的li标签先获取到: titles = r

weixin_44949187的博客 2836

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

eclipse配置Struts2、Hibernate3、Spring2.5范例

目录 1       下载eclipse. 1 2       安装HIBERNATE插件.. 1 2.1       安装hibernate synchronizer 1 3       创建项目.. 3 3.1       创建Demo项目.. 3 3.2       JUnit4. 4 3.3       Referenced Libraries 5 4       项目分层

GarfieldEr007的专栏 1686

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Hibernate介绍以及配置

1. 基本概念 Hibernate就是基于JAVA语言开发的,处于数据访问层的一套ORM开源框架,基本可以替代JDBC而存在,可以跨数据库平台,并且大大的减少了代码量。 Hibernate的本质就是封装了JDBC和SQL(用HQL替换SQL,自动分析数据库平台,生成对应的SQL)。 ORM就是把Object类型的数据映射到关系型数据库中,这样我们可以通过操作JAVA对象来达到操作数据库的目的。 [...

xhuihong的博客 132

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Win11升级后黑屏蓝屏?从错误代码到驱动修复的完整排查指南

操作系统升级后出现启动异常是常见的技术挑战,尤其在驱动兼容性和电源管理策略交织影响下,系统稳定性面临新的考验。理解Windows内核的自我保护机制与故障转储原理,是高效定位问题的关键。借助事件查看器、minidump文件以及系统文件修复工具DISM和SFC,用户可以系统性地排查蓝屏错误代码背后的真实诱因;而针对黑屏现象,则需要从快速启动、显卡驱动、视频输出链路等角度逐层剥离。无论是个人电脑日常维护,还是企业IT环境批量升级,掌握这套排查逻辑都能显著缩短故障恢复时间,降低数据丢失风险。本文围绕Win11升级后

weixin_34306593的博客 320

Hibernate原理与应用

Hibernate原理与应用 主要内容 1、  引入 2、  安装配置   一、引入 (1)模型不匹配(阻抗不匹配) Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关联模型,其主要概念有:表、主键、外键等。 (2)解决办法 1、  使用JDBC手工转换 2、  使用ORM(ObjectRelation Mapping对象关系映射)框架来解决,主流的O

尉微的博客专栏 348

使用Hibernate的一个完整例子

配置1、 下载安装Tomcat,并且下载Hibernate的运行环境(主要包含一些JAR包)。2、 把要使用的数据库的JDBC驱动程序拷贝到%TOMCAT_HOME%/common/lib目录下。笔者使用的是MYSQL,对应的驱动程序的JAR包为mm.mysql-2.0.4-bin.jar。3、 在Tomcat的Webapps目录下新建一个Web应用,名字为hibernate。4、 把Hibern

danning之道 828

收藏:hibernate应用配置说明-middlegen和hbm2java的配置

[code]hibernate应用配置说明-middlegen和hbm2java的配置 -- hibernate应用配置说明 -- Middlegen ************************************ ant配置 ************************************ 下载ant,解压 将ant考到c:跟目录 环境变量里加上ANT_HOME...

解决问题收藏 133

MySQL安装和配置

    最近的项目中使用了MySQL数据库,一些MySQL的新用户在配置使用时还有些不够熟练,特在此记录,方便开发团队使用,该文章所涉及内容均可以在MySQL参考手册第二章“安装MySQL”中找到。MySQL安装后自带了英文参考手册,也可以在http://dev.mysql.com/doc/refman/5.1/zh/index.html查看中文版本,也可以下载。        本文根据项

yycampo的专栏 353

Hibernate 配置

引用:http://inclear.bokee.com/2968790.html  阿泠的自省札记 部落格 转载过来,主要是考虑学习Ant ************************************ant配置************************************下载ant,解压将ant考到c:跟目录环境变量里加上ANT_HOME=c:\antPATH=c:\ant\...

xiaofengtoo的专栏 215

hibernate应用配置说明-middlegen和hbm2java的配置

--hibernate应用配置说明 -- Middlegen************************************ant配置************************************下载ant,解压将ant考到c:跟目录环境变量里加上ANT_HOME=c:\\antPATH=c:\\ant\\bin;进入命令行模式,输入: ant如:C:\\&gt;antBuild...

JAVA for GIS 106

Hibernate Reactive 开源项目安装与使用指南

Hibernate Reactive 开源项目安装与使用指南 1. 项目目录结构及介绍 Hibernate Reactive 是一个基于 Hibernate ORM 的扩展,旨在支持非阻塞数据库操作,以适应现代异步应用的需求。下面是项目的主要目录结构及其简要介绍: hibernate-reactive/ ├── build.gradle.kts - Gradle 构建脚本 ├──...

gitblog_00005的博客 368
上一篇: Jfreechart生成曲线图数据点显示数据值
下一篇: javascript日期时间控件
superjava_2006
博客等级 码龄20年 39粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值