Hibernate: 三种状态和CRUD四种操作

深入理解Hibernate与Struts在CRUD操作中的应用 对象关系映射(Object-Relational Mapping,简称ORM)是一种编程技术,用于实现面向对象语言中对象模型与关系型数据库之间的相互转换。它让开发者能够以面向对象的方式来操作数据库,而不必直接编写复杂的SQL语句。Hibernate作为一个流行的Java ORM框架,通过提供一套完整的工具和API,使得开发者可以像操作对象一样操作数据库中的数据,极大地简化了数据库编程工作。 阅读详情

本篇博客是初学hibernate时笔记总结,主要总结hibernate的三种状态和hibernate的CRUD操作。

1. hibernate的三种状态:

  • Transient State : 瞬时状态;
  • Persistent State : 持久状态;
  • Detached State : 离线状态或托管状态;

  • Transient State : 瞬时状态:
    当我们new操作符初始化一个对象时,它处于瞬时态,也就是他没有任何和数据库表相关的行为,只要应用程序不再引用这些对象,它们状态将会丢失,被jvm垃圾回收了。总结,这个对象,Session没管理,数据库中没存。
  • Persistent State : 持久状态 :
    持久化实例则是具有数据库标识的实例,它由持久化管理器Session统一管理的,只要它的状态发生改变,在事务提交时,会同步到数据库中。
  • Detached State : 离线状态或托管状态 : 数据库中有,但是session不管理了,

具体的分析推荐一篇博客写的很详细,也很容易理解,


Hibernate三种状态的详解,


2.CRUD操作;

2.1 Bean对象

package com.qian.domain;

import java.util.Date;

public class User2 {
    private String user2Id;
    private String user2Name;
    private Date user2CreateDate;

    public String getUser2Id() {
        return user2Id;
    }
    public void setUser2Id(String user2Id) {
        this.user2Id = user2Id;
    }
    public String getUser2Name() {
        return user2Name;
    }
    public void setUser2Name(String user2Name) {
        this.user2Name = user2Name;
    }
    public Date getUser2CreateDate() {
        return user2CreateDate;
    }
    public void setUser2CreateDate(Date user2CreateDate) {
        this.user2CreateDate = user2CreateDate;
    }
}

User2.hbm.xml文件

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

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.qian.domain">

    <class name="User2" table="t_User2">
        <id name="user2Id" column="User2_ID">
            <generator class="uuid"/>
        </id>
        <property name="user2Name"/>
        <property name="user2CreateDate"/>

    </class>


</hibernate-mapping>

hibernate.cfg.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">qian</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup 
        <property name="hbm2ddl.auto">create</property>
        -->

        <mapping resource="com/qian/domain/User.hbm.xml"/>
        <mapping resource="com/qian/domain/User2.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

hbm2ddl类

package com.qian.envir;

import java.util.EnumSet;

import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.schema.TargetType;

/**
 * http://blog.youkuaiyun.com/qinshijangshan/article/details/53314230
 * http://bbs.youkuaiyun.com/topics/391942178?page=1
 * 参考网页来分析所在版本的不同SchemaExport变化的集中方式,
 * <property name="hbm2ddl.auto">create</property>
 * @author Administrator
 *
 */
public class ExoprotDB {

    public static void main(String[] args) {

        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();

        MetadataImplementor metadataImplementor = (MetadataImplementor) new MetadataSources(serviceRegistry)
                .buildMetadata();

        SchemaExport export = new SchemaExport();

        export.create(EnumSet.of(TargetType.DATABASE), metadataImplementor);

    }

}

HibernateUtil类

package com.qian.envir;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

public class HibernateUtil {

    private static SessionFactory sessionFactory;

    //生成sessionFactory;
    static{
        final StandardServiceRegistry standardServiceRegistry = new
                StandardServiceRegistryBuilder().configure().build();
        try{
            sessionFactory = new MetadataSources(standardServiceRegistry)
                    .buildMetadata().buildSessionFactory();         
        }catch(Exception e){
            StandardServiceRegistryBuilder.destroy(standardServiceRegistry);
        }
    }

    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }

    public static Session getSession(){
        return sessionFactory.openSession();
    }

    public static void freeSession(Session session){
        if(session!=null){
            if(session.isOpen()){
                session.close();
            }
        }
    }
}

CRUD测试类代码

package test.qian;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.qian.domain.User2;
import com.qian.envir.HibernateUtil;

import junit.framework.TestCase;

public class CRUDTest extends TestCase {

    public void testCreate(){
        //step one:读取hibernate.cfg.xml文件拿到sessionFactory
        //由于sessionFactory相当于DB的镜像,并且创建很花时间,我们可以写一个工具类只创建一次;
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

        Session session = null;
        Transaction transaction = null;

        try{
        //stpe two: 通过sessionFactroy拿到session
            session = sessionFactory.openSession();
        //step three: 开启事务-->提交是否-->捕获异常事务回滚
            transaction = session.getTransaction();
            transaction.begin();

        //step four: 写添加用户的测试代码
            User2 user2 = new User2();
            user2.setUser2Id("u2id");
            user2.setUser2Name("userName");
            user2.setUser2CreateDate(new Date());

        //step five: 保存到数据库中
            session.save(user2);

            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
        //step six: 无论成功与否释放session
            HibernateUtil.freeSession(session);
        }

    }

    public void testReadByGet(){
        //step one:
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session =null;
        Transaction transaction = null;

        try{
            //step two:
            session = sessionFactory.openSession();
            //step three:
            transaction = session.getTransaction();
            transaction.begin();

            //step four:
            //get方法的第一个参数为 Class对象, 第二个参数为Serializable类型(key),也就是根据id查值
            //get方法获取的对象是持久化对象,如果没有找到则返回null,不会报错。
            //发出get查询,它就会马上去数据库中查找,因为是持久化对象,如果我们改变了对象的属性,在最后
            //的commit是,及时没有update,Hibernate也会对照数据库中的对象和内存中的对象,对数据进行更改;

            User2 user2 = session.get(User2.class, "402880da5e50fc2d015e50fc30b10000");
            if(user2!=null)
                System.out.println(user2.getUser2Name()+" : "+user2.getUser2CreateDate());

            //user2.setUser2Name("如果这里对属性操作,会同步到数据库");

            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            HibernateUtil.freeSession(session);
        }
    }

    public void testReadByLoad(){
        //step one:
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session =null;
        Transaction transaction = null;

        try{
            //step two:
            session = sessionFactory.openSession();
            //step three:
            transaction = session.getTransaction();
            transaction.begin();

            //step four:
            //load方法的第一个参数为 Class对象, 第二个参数为Serializable类型(key),也就是根据id查值
            //load方法获取的对象是持久化对象,如果没有找到则抛出对象没找到异常。
            //发出load查询,它不会马上去数据库中查找,而是创建一个User2的代理对象,当真正用的时候才会
            //向数据库发出查询语句。也就是load使用CGLIB的动态代理来实现懒加载的。
            //的commit是,及时没有update,Hibernate也会对照数据库中的对象和内存中的对象,对数据进行更改;

            User2 user2 = session.load(User2.class, "402880da5e50fc2d015e50fc30b10000");

            System.out.println(user2.getUser2Name()+" : "+user2.getUser2CreateDate());

            user2.setUser2Name("如果持久化对象 对属性操作,会同步到数据库");

            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            HibernateUtil.freeSession(session);
        }
    }

    public void testUpdate(){
        //step one:
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session =null;
        Transaction transaction = null;

        try{
        //step two:
            session = sessionFactory.openSession();
        //step three:
            transaction = session.getTransaction();
            transaction.begin();

        //step four:
            User2 user2 = session.load(User2.class, "402880da5e50fc2d015e50fc30b10000");
            user2.setUser2Name("zhangSan");
        //step five:
            session.update(user2);

            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            HibernateUtil.freeSession(session);
        }
    }

    public void testDelete(){
        //step one:
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session =null;
        Transaction transaction = null;

        try{
            //step two:
            session = sessionFactory.openSession();
            //step three:
            transaction = session.getTransaction();
            transaction.begin();

            //step four:
            User2 user2 = session.load(User2.class, "402880da5e50fc2d015e50fc30b10000");
            session.delete(user2);
            System.out.println("delete successfully");

            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            e.printStackTrace();
        }finally{
            HibernateUtil.freeSession(session);
        }
    }
}
MuJoCo 仿真中的碰撞检测与参数优化实战 本文深入解析MuJoCo仿真中的碰撞检测机制与参数优化策略,涵盖位掩码配置、凸包分解实战及穿模问题解决方案。通过具体案例和参数设置建议,帮助开发者高效解决机械臂抖动、轴孔装配等常见问题,提升仿真精度与稳定性。特别针对步进电机仿真提供了高增益位置执行器的优化方案。 阅读详情

相关推荐

5分钟搞定mmdetection3d多模态推理可视化:从KITTI数据集到3D检测结果展示

本文提供了一份快速上手MMDetection3D进行多模态推理可视化的实战指南。文章详细介绍了从环境搭建、KITTI数据集准备,到模型选择、配置解析,再到执行多模态推理并生成3D检测结果可视化的完整流程,旨在帮助开发者在30分钟内快速验证模型并直观展示检测效果。

weixin_29051149的博客 248

Hibernate的1VN的关联关系,使用配置式(注解式)实现一套CRUD?

资料: 示例:国家、省份、城市的三级连动。 一、数据库要求: 1、国家表nation:nid国家编号、nname国家名称 2、省份表province:pid省份编号、pname省份名称、nid国家的编号 3、城市表city:cid城市编号、cname城市名称、pid省份编号 二、实体类: 1、国家表Nation.java的实体类(封装继承省略):     1.1、配置式: ...

qq_42246139的博客 691

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2305

使用Hibernate进行CRUD操作

CRUD操作 1、使用hibernate把数据库模型和java对象进行ORM映射,通过配置文件或者注解完成。 2、程序通过hibernate提供的API进行CRUD, C操作对应hibernate方法为save();(添加) R操作对应hibernate方法为get();(查询) U操作对应hibernate方法为update();(修改) D操作对应hibernate方法为delete()。(删...

每天就学一点点的博客 1541

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

【TM1650】STM8S TM1650芯片控制程序

以下为.h文件: #ifndef __TM1650_I2C_H #define __TM1650_I2C_H #include "stm8s.h" #include "stm8s_gpio.h" #include "tim1.h" #include "usart2.h" #include &lt;iostm8s103f3.h&gt; #include &lt;intrinsics....

cxw312864660的博客 1万+

Hibernate学习-06:CRUD(增删改查)操作之删除记录

前面两讲我们介绍了查询和修改操作,现在我们再介绍最后一种操作:删除操作。同样地,session对象提供了delete()方法来帮助我们进行删除操作。 我们还是使用入门案例的环境。详见Hibernate学习-03。 数据库状态: 删除和修改是一样的,也是有两种方式:1、手动创建对象的方式;2、先查询再删除的方式 1、手动创建对象的方式;修改测试类,添加如下所示的测试方法: @Tes

Dove_Knowledge的博客 3027

设备管理器找不到蓝牙?从驱动到BIOS的系统排查指南

在Windows系统中,蓝牙功能依赖硬件、驱动、系统服务三层协同工作。设备管理器作为硬件状态的可视化窗口,当蓝牙设备消失时,往往意味着某一层链路中断。常见原因包括BIOS无线开关关闭、驱动异常、蓝牙支持服务被禁用,或系统文件损坏。排查思路应从基础概念出发,先理解蓝牙设备在设备管理器中的四种隐藏位置,再通过扫描硬件、检查BIOS、重装驱动、修复服务等步骤逐层定位。这一方法不仅适用于Windows电脑,也适用于HC-05、ESP32等嵌入式蓝牙模块,因为硬件、协议栈、应用层的故障逻辑相通。掌握这套技术价值在于减

weixin_33377602的博客 266

hibernate 相关配置和CRUD操作

hibernate 相关配置和CRUD操作 (Maven)搭建 1. 什么是hibernate ORM框架/持久层框架 jdbc的一个框架 object(对象) reference (关系) mapping(映射) 通过管理对象来改变数据库中的数据 通过管理对象来操作数据库 mybatis 优势:跨数据库的无缝移植 hibernate 导入依赖 相当于jar包的全局变量,如果jar包版本需要改动...

wx1762813417的博客 227

ArcGIS利用模型构建器批量导出nc文件中的不同波段数据

ArcGIS利用模型构建器批量导出nc文件中的不同波段数据

Yuanbaokk的博客 7252

Windows环境下Ollama的本地部署方案

本文主要介绍了Windows环境下Ollama的本地部署方案,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. Windows环境安装 3. API调用示例代码

herosunly的博客 11万+

一步步实现:JPA的基本增删改查CRUD(jpa基于hibernate)

目录(?)[-]创建一个JPA工程创建实体类JPA的配置文件persistencexml的配置测试增删改查CRUD1.创建一个JPA工程首先,创建一个JPA工程(若不知道JPA创建或出现at least one user library must be selected等错误,请参考http://blog.youkuaiyun.com/baidu_37107022/article/details/765543...

syc19930121的博客 1075

在 SAP BTP 中为 SAP AI Core 创建 Service Instance 和 Service Key 的完整实战指南

摘要:本文详细介绍了在SAP BTP上创建AI Core服务实例和密钥的关键步骤,这是实现ABAP系统与Gen AI大语言模型集成的核心技术环节。文章通过一个制造业财务问答场景的案例,系统梳理了从前提条件准备、架构理解到具体操作的全过程,重点解析了service instance创建、X.509证书配置等关键节点。特别强调了Extended计划选择、证书格式等易错点,为ABAP开发人员实现Gen AI场景提供了实用指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 270

Hibernate入门:CRUD方法及实体对象的三种状态

Hibernate的实体对象有三种状态,而实体对象是被Session管理: (1)瞬态:刚刚被创建出来时的状态; (2)持久化:被Session管理时的状态,能够和数据库同步; (3)脱管:过去被Session管理,但是现在Session已关闭,虽然存在与数据库对应的记录,但是不能同步; Session的入门常用方法

xiazdong 5871

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Java】Hibernate(二)持久化对象的三种状态和CRUD

【Hibernate中的Session】       第一点申明, Hibernate的session和HTTP的session会话是两码事。       Session是Java应用程序和Hibernate进行交互时使用的主要接口,也是持久化操作的核心。它提供了很多持久化的方法,如save update delete等。通过这些方法我们就可以透明的完成对象的增删改查CRUD。透明是指Sess

王璐 559

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Hibernate】——CRUD操作

前言     在进入Hibernate的学习之后,接触了CRUD操作这个概念,开始不知道,觉得没啥,后面又遇到了,百度了一下,CRUD是指在计算机处理是的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。 Create public void testSa

你若盛开,清风自来 564

深度学习工具包 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之CRUD与实例状态

在上一篇《初识Hibernate》中简单介绍了在Hibernate如何加载对象和持久化对象,以及Hibernate中对象实例状态。本文将继续介绍Hibernate简单的增删改查方法和对对象实例状态的理解(查询方法暂不提及)。 一、HibernateのCRUD操作 1.1 HibernateのCreate @Test pub...

weixin_33797791的博客 127

【Hibernate教程】对象生命周期及CRUD操作

一、对象状态及生命周期 1、Transient:瞬时状态,由new命令开辟内存空间的Java对象。 2、Persistent:持久化状态,通过Session的save()或saveOrUpdate()、persist()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变为持久化对象。 3、Detached:游离状态,当一个Session执行close()或clea

程序员云帆哥的博客 1万+

hibernate的入门学习二 · 实现CRUD

实体类对象在Hibernate中有3种状态,分别是瞬时,持久和脱管 瞬时指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了 持久指得是一个对象和hibernate发生联系,有对应的session,并且在数据库中有对应的一条记录 脱管指的是一个对象虽然在数据库中有对应的一条记录,但是它所对应的session已经关闭了 状态演示: SessionFactory sf = new Configuration().configure("/...

yucan1234的博客 166

Hibernate(4) 基本CRUD操作 以及实体类的几种状态

使用Hibernate进行CRUD操作 1.CRUD操作 在了解完Hibernate的对象之后,可以尝试进行CRUD的操作,毕竟是Dao层的框架,那么最起码要和数据库产生点关系,看看是个什么样的结果呗。代码比较简单,就直接贴了。在里面进行了简单的说明,写出来还是为了加深印象,好记性不如烂笔头,好好总结才是自己的! 好了回正题,下面列出了基本的CRUD操作: 1.以下的操作未按照正常的t...

BestBigKK 309

hibernate状态

hibernate状态-临时状态、持久化状态、离线状态

一张小羊毛的博客 2120

Hibernate对象的CRUD操作

1.  Hibernate对象的CRUD操作 1.1.  对象的三种状态 瞬时(Transient) - 由new操作符创建,且尚未与HibernateSession 关联的对象被认定为瞬时(Transient)的。瞬时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。如果瞬时(Transient)对象在程序中没有被引用,它会被垃圾回收器(g

morris 18万+

Hibernate MoreToMore CRUD

这几天一直看马老师的Hibernate视频..  上面有个视频留了个作业。 就是双向多对多 的  CRUD 学生和老师之间是多对多的关系 会产生一个中间表。 记录着老师ID和学生ID Delete操作说明一下问题: 一个是要删除一个学生,那

奋斗吧。 724

Hibernate缓存和CRUD操作

1.文章转载于:http://www.techrss.cn/html/2008/04-08/79497.htm       2.1 Hibernate实体对象的三种状态      (1)Transient:所谓Transient就是说实体对象在内存中存在,与数据库的记录无关。      (2)Persient:Persient对象对应数据库中的一条记录,也可以这样子理解,如果一个实体对象与某个se...

endeavor416 143

hibernate3第二章之JUNIT简单单元测试、CRUD、三种状态、主键生成策略

这次主要是在第一章的基础上做HIBERNATE开发 一、搭建JUNIT环境: 1.加junit包: junit-4.5.jar 2.创建与src同目录文件夹 test (这和maven差不多,把开发代码和测试代码分开放) 3.要测试src下的哪个类哪个方法就在test下设置同样的路径,类名为你要测试的类+Test,方法名为test+你要测试方法; 如要测试Teacher类: 1.@B

wy的专栏 411

关于hibernate的缓存和CRUD

 hibernate作为一种现在比较流行的轻量级的ORM框架,2003年开始在国内流行,到目前来说在做持久层上还是占有统治地位的。虽然说丰富灵活的HQL和面对对象的Criteria查询,把程序员从复杂繁琐的JDBC中解放了出来,但作为持久层的框架,它的性能才是最重要的核心问题。而性能的核心在于缓存,由于最近在学习这些,所以就把自己的学到的一点东西拿来与大家分享,希望能起到抛砖引玉的效果。     ...

dolphin_ygj 161
上一篇: Spring AOP:静态代理、动态代理和几种常见的aop配置
下一篇: byte vs char 小结
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值