Hibernate基础核心解析(1)

                             Hibernate基础核心解析(1)

 

基本过程:

   一个*.hbm.xml对应一个POJO类,用于保存从类到关系映射的信息,hibernate.cfg.xml信息会获取映射源,同时保存关于连接数据库所需的基本信息。Configuration接口产生一个对应的对象用于加载配置信息,configuration对象产生一个对应于数据库的SessionFactory对象,SessionFactory可产生多个Sesssion对象,每个Session对应一次对数据库的操作,Session对象通过产生Transaction来使操作具有原子性。

 

1、hibernate概述:

   Hibernate是一种常用的ORM(对象关系映射)框架,用于将POJO类对应到数据库,从而实现通过面向对象完成对数据库的操作。

 

2、*.hbm.xml文件(对象关系映射文件)

(1)一个hbm.xml文件将一个类对应到一个关系(数据库中的表)

(2)hbm.xml文件模板:

   <?xmlversion="1.0" encoding="UTF-8"?> 

<!DOCTYPE hibernate-mapping PUBLIC 

       '-//Hibernate/Hibernate Mapping DTD 3.0//EN' 

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

 <hibernate-mapping package=”com.firsthibernate”>

     <class name=”user”  table=”user”>                          o

        <id name=”the_id”  colum=”id”type=”java.lang.Interger”>r

            <generator class=”uuid”>

        </id>

        <property name=”user_name” type=”java.lang.String”>

            <column name=”the_user_name” not-null=”false”>

        </property>

    </class>

  </hibernate-mapping>

Hbm.xml的根标签为<hibernate-mapping></hibernate-mapping>其中的package可以省略,则后面的类名必须为全称限定类名。次级的标签为类和其所对应的表明(省略默认相同);再次级为id(主键)和property(属性),主键内必须说明generator;两者的类型对应的属性名皆可以省略,not-null默认为ture.

 

 

3、*.cfg.xml(hibernate配置文件)

 (1)hibernate配置文件用于配置连接数据库的所有信息包括:JDBC类型,数据库的URL,用户名,密码,方言,以及基本设置。同时还要有映射文件源信息<mapping resource=”****”>.

  (2)模板:

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

<!DOCTYPE hibernate-configurationPUBLIC 

         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 

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

<hibernate-configuration>cla

<!—对数据库的连接信息进行设置—>

<session-factory>

   <! – 使用的JDBC -->

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

com.mysql.jdbc.driver

</property>

   <! – 数据库的URL路径 –>

<propertyname=” hibernate.connection.url”>

jdbc:mysql://localhost:3306/hibernate_first

</property>

<!—用户名 -->

<property name=” hibernate.connection.username”>

Root

</property>

<!—密码—>

<property name=” hibernate.connection.password”>

 Root

</property>

<!—方言 -->

<property name=” hibernate.dialect”>

org.hibernate.dialect.MySQLDialect

</property>

<!-- 显示出对应sql语句 --> 

   <propertyname="show_sql">true</property> 

   <!-- 格式化输出sql语句 --> 

   <propertyname="format_sql">true</property>

<!-- 指定管理对象映射文件 --> 

   <mappingresource="com/lc/domain/Employee.hbm.xml"></mapping

 </session-factory>

</hibernate-configuration>

 

 

3、configuration类

(1)用于读取cfg.xml文件,并获得配置的所有信息,同时根据配置信息生成对应的SessioFactory对象。

(2)代码示意:

  Configurationcfg= new Configuration().configure();

//加载配置信息,生成对应的configuration对象

SessionFactory sf=cfg.buildSessionFactory();

 

4、SessionFactory接口

(1)由Configuration对象产生,一个数据库对应一个SessionFactory对象,通过创建session来完成对数据库的操作。E

(2)代码示意:

  Session session1=sf.openSession();

 Session session1=sf.getCurrentSession();

//创建一次会话

区别:

①采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会

②采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()创建的session必须手动关闭.

③使用getCurrentSession()需要在hibernate.cfg.xml文件中加入

如下配置:

* 如果使用的是本地事务(jdbc事务)

<propertyname="hibernate.current_session_context_class">thread</property>

* 如果使用的是全局事务(jta事务)

<propertyname="hibernate.current_session_context_class">jta</property>

 

5、Session接口

(1)由SessionFactory对象产生,一次会话对应一个Session对象,可以创建Transaction对象,使操作具有原子性。

(2)代码示意:

  Session1.sava(user)

//对表进行操作后进行保存,其中user对象为POJO类的实例。

 Session1.close();

//关闭会话,如果为getCurrentSession创建的会话可以省略。

 Session1.beginTransaction();

//开始事务,以下的操作具有原子性,直至commit结束;

Session1.getTranscation.

//获得当前的事务。

 

6、Transaction接口

(1)由Seeeion对象产生,使操作具有原子性。

(2)Session1.getTransaction.commit();

//提交事务

Session1.getTransaction.rollback();

//事务滚回

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值