转载自sunada大大的hibernate入门

本文详细介绍如何使用 Hibernate 进行环境配置、数据库操作及实体映射,包括 XML 配置方式和注解方式,并提供具体代码示例。

1. 环境配置

1.1 hiberante环境配置

hibernate可实现面向对象的数据存储。hibernate的官网:http://hibernate.org/ 官网上选择hibernate ORM,可以下载最新的hibernate,还有配套的document教程 http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/。下载到的hibernate文件夹中有document文档(hibernate\documentation\manual\en-US\html_single)。发现hibernate4.3.1的文件夹中的文档和网站上提供的答案不太一样,官网的文档更详细一些,还附有toturial的源代码。

打开eclipse->windows->preferences->java->buildpath->user libraries,点击new,新建一个library,可取名为hibernate。点击Add JARs,选择hibernate->lib->required中的所有jar文件,另外还需要加上数据库的connector文件。因为使用的是mysql,所以我这里用到的mysql-connector-javajar文件。这个jar文件从哪里得到呢?安装mysql服务器产生的文件夹里面是没有jar文件的。我们需要另下载一个MySQLJDBC jar包。可以从mysql的官网上下载:http://dev.mysql.com/downloads/connector/j/下载后得到一个msi文件,双击及可安装。安装后,默认会产生文件夹C:\Program Files (x86)\MySQL\MySQLConnector J ,这里就有一个mysql-connector-java-x.x.x-bin.jar包了。

1.2 mysql数据库配置

安装mysql服务器,设置root的密码为root。启动mysql服务器,新建数据库hibernate,并新建表student

1

2

3

4

5

# mysql -uroot -proot

> create database hiberante;

> use hibernate;

> create table student(id int primary key, name varchar(20), age int);

> quit;

2. 实例代码

新建一个java工程,假设取名为HibernateHelloWorld。在src下新那一个package,可取名为com.sun.hibernate.model

2.1 类代码

新建一个简单的类,放在com.sun.hibernate.model包下。内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

package com.sun.hibernate.model;

 

public class Student {

    private int id;

    private String name;

    private int age;

 

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

 

}

2.2 配置hibernate配置文件

hibernate\projec\etc中的hiberante.cfg.xml可以作为hibernate的配置文档,或者可使用hibernate\documentation\manual\en-US\html_single\index.html作为模板。在src文件夹下新建一个文件,并命名为hibernate.cfg.xml。(不可命名为其他文件名)最基础的配置文件可参考如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<?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>

     

    <!-- Database connection settings -->

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

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

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

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

         

    <!-- JDBC connection pool (use the built-in) -->

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

         

    <!-- SQL dialect -->

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

         

    <!-- Echo all executed SQL to stdout -->

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

         

    <!-- Enable Hibernate's automatic session context management -->

    <!--<property name="current_session_context_class">thread</property>-->

         

    <!-- Drop and re-create the database schema on startup -->

    <!-- <property name="hbm2ddl.auto">create</property> -->

         

    <!-- Disable the second-level cache -->

    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

     

    <mapping resource="com/sun/hibernate/model/Student.hbm.xml"/>

         

    </session-factory>

</hibernate-configuration>

mapping resource处的值可根据包名和类名做修改。若类名为Student,则此处的类配置文件必为:Student.hbm.xml

2.3 mapping文件

新建一个文件,命名为Student.hbm.xml,放在com.sun.hibernate.model包下。内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

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

<!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.sun.hibernate.model">

    <class name="Student">

        <id name="id"></id>

        <property name="name"></property>

        <property name="age"></property>

    </class>

</hibernate-mapping>

注意文件开始处的配置,此处与hibernate.cfg.xml不一样。如果配置的与hiberante.cfg.xml一样,运行时会提示错误:文档根元素 "hibernate-mapping"必须匹配 DOCTYPE "hibernate-configuration"  ”

2.4 StudentTest测试类

新增Student.javajunit测试类StudentTest.java,放在com.sun.hibernate.model包下代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

package com.sun.hibernate.model;

 

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

public class StudentTest {

 

    public static void main(String[] args){

        Student s = new Student();

        s.setId(1);

        s.setName("s1");

        s.setAge(1);

         

        Configuration cfg = new Configuration();

        SessionFactory sf = cfg.configure().buildSessionFactory();

         

        Session session = sf.openSession();

        session.beginTransaction();

        session.save(s);

        session.getTransaction().commit();

        session.close();

        sf.close();    

    }

}

2.5. 运行结果

运行StudentTest.java这个类,虽然提示输入成功。去数据库查询后,可发现数据已存储到student数据表中。虽然myeclipse会提示buildSessionFactory()这个函数被deprecated,但实际上程序还是可以运行成功的。

3. 使用annotation

因为使用annotation比较方便,使用annotation就可以不用写XXX.hbm.xml文件了。

3.1 新建类

@后应该出现提示的,如果没有出现,在Window->Preferences->Java->Editor->Content Assist,Auto activation triggers forJava中增加@即可。Teacher.java类与Student类内容基本相同,以@开头的内容为annotation

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

package com.sun.hibernate.model;

 

import javax.persistence.Entity;

import javax.persistence.Id;

 

<span style="color: #000000;">@Entity</span>

public class Teacher {

     

    <span style="color: #000000;">@Id</span>

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public int getTitle() {

        return title;

    }

    public void setTitle(String title) {

        this.title = title;

    }

     

    private int id;

    private String name;

    private int age;

    private String title;

     

}

3.2 更新hibernate.cfg.xml

在原hibernate.cfg.xml文件的mapping以下标红内容。

1

2

3

<mapping resource="com/sun/hibernate/model/Student.hbm.xml"/>

<span style="color: #ff0000;"><mapping class="com.sun.hiberante.model.Teacher"/>

</span>

4.3 新建TeacherTest.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import org.hibernate.cfg.Configuration;

 

public class TeacherTest {

 

    public static void main(String[] args){

        Teacher t = new Teacher();

        t.setId(1);

        t.setName("t1");

        t.setAge(1);

        t.setTitle("middel");

         

        Configuration cfg = new AnnotationConfiguration();

        SessionFactory sf = cfg.configure().buildSessionFactory();

        Session session = sf.openSession();

        session.beginTransaction();

        session.save(t);

        session.getTransaction().commit();

        session.close();

        sf.close();

    }

 

}

3.3 运行

在数据库中新建teacher数据表:

1

2

3

4

# mysql -uroot -proot

> use hibernate;

> create table teacher(id int primary key, name varchar(20), age int, title varchar(20));

> quit;

运行TeacherTest.java这个类,虽然提示输入成功。去数据库查询后,可发现数据已存储到teacher数据表中。

 

内容概要:本文档为集成系统平台通用验收方案的经典模板,系统阐述了项目验收的全过程,涵盖验收前提、标准、初步验收、上线试运行及最终验收等关键环节。重点包括验收准备、文档整理、售后服务交接、技术文档移交、上线切换与运行维护、问题处理机制以及项目总结与验收评审等内容,确保系统在功能、性能、稳定性等方面满足合同和技术要求,并实现平稳过渡与长期稳定运行。文档强调交付物完整性、多方协作及后续支持机制,保障项目顺利收尾并进入质保期。; 适合人群:从事系统集成、软件实施、项目管理及相关技术支持工作的专业人员,尤其是参与政府或企业信息化建设项目的技术负责人、项目经理、运维人员及验收评审人员。; 使用场景及目标:①用于指导大型信息系统建设项目在部署后的验收流程设计与执行;②帮助项目团队规范交付文档、理清验收步骤、落实售后服务衔接;③支撑甲乙双方依据合同和标准完成上线试运行、初步验收和最终验收,确保项目合规闭环。; 阅读建议:此模板具有较强的实务性和可操作性,使用者应结合具体项目背景进行裁剪和补充,重点关注验收标准、文档清单和服务交接机制,在实际应用中同步完善问题台账、运维手册和培训记录,提升项目交付质量与客户满意度。
**卷积序列嵌入推荐模型(Caser)的Matlab实现解析** 卷积神经网络在序列数据处理中展现出卓越性能,尤其在时间序列分析与自然语言处理领域。Caser模型将卷积神经网络技术引入推荐系统,通过卷积运算提取用户历史行为中的潜在模式,从而为个性化推荐提供更为精准的上下文依据。 **模型结构解析** 1. **架构设计**:Caser模型整合了水平与垂直两个卷积模块。水平卷积模块侧重于捕捉用户的近期偏好,垂直卷积模块则致力于挖掘其长期兴趣倾向。两者协同工作,构建出完整的用户兴趣表征。 2. **序列嵌入表示**:用户的历史交互记录被转换为固定长度与维度的嵌入向量序列。这些向量能够有效编码项目的特性,并通过卷积运算学习特性间的关联规律。 3. **卷积运算层**:该层利用多种尺寸的滤波器对嵌入序列进行扫描,以提取不同范围的兴趣特征。水平卷积沿时间维度滑动,垂直卷积则在嵌入向量的特征维度上进行操作。 4. **特征降维层**:采用池化操作(如最大值池化或均值池化)压缩特征维度,在减少计算负担的同时保留关键信息,以概括全局兴趣模式。 5. **预测层与优化目标**:卷积特征经全连接层映射为预测分值。训练过程中常使用均方误差或交叉熵作为损失函数,通过优化模型参数缩小预测值与实际交互间的差异。 6. **模型训练与性能验证**:采用反向传播算法迭代更新权重,以最小化损失函数。评估阶段可通过准确率、召回率及曲线下面积等指标量化推荐效果的优劣。 **Matlab环境下的实现要点** 1. **代码组织**:实现代码通常包含数据预处理、模型构建、训练流程、预测功能及评估模块,并以结构化脚本或函数形式呈现。 2. **数据准备**:将原始数据加载为矩阵或结构数组,并进行归一化、缺失值填补等预处理,使其符合模型输入规范。 3. **网络搭建**:借助Matlab深度学习工具箱,可便捷地定义卷积层、池化层与全连接层,构建完整的卷积神经网络架构。 4. **训练过程配置**:使用内置训练函数设置优化器、学习速率及批处理规模等参数,并可引入正则化方法抑制过拟合现象。 5. **结果生成与模型检验**:训练结束后调用预测函数输出推荐评分,并依据预设指标综合分析模型性能。 6. **参数调优与实验设计**:通过调整滤波器尺寸、网络深度、学习速率等超参数,探索最优模型配置方案。 **结论** 基于Matlab实现的Caser模型充分发挥了其在数值计算方面的优势,成功将卷积神经网络应用于推荐系统,显著提升了推荐精度与用户满意度。该实现为致力于推荐系统或卷积神经网络应用研究的开发者提供了重要的实践参考,通过代码学习与修改,可进一步深化对模型机理的理解,并将其适配于多样化的推荐场景中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
电力负荷预测作为能源管理的关键环节,直接关系到电力系统的稳定运行与资源优化配置。灰色模型(Grey Model,GM)作为一种适用于小样本、非线性及信息不完整数据序列的预测方法,在电力负荷预测领域得到了广泛应用。本项目“Grey-Model-master”基于灰色模型实现了电力负荷预测的完整代码,具备可运行性,旨在帮助用户理解并应用灰色模型进行实际预测。 灰色系统理论由邓聚龙教授于1982年提出,其核心思想是通过对部分已知信息的数据序列进行建模,揭示数据中隐含的内在规律。灰色模型的基本步骤包括:构建原始数据序列、生成一次累加序列、建立微分方程模型、求解模型参数以及进行模型检验与调整。 电力负荷预测旨在预估未来特定时段内电力系统的需求电量,是电力系统规划、调度与运营的基础。准确的预测有助于降低电网运行风险,提升电力设备利用效率,并优化发电资源配置。 在电力负荷预测中,由于负荷数据通常呈现趋势性、季节性和随机性特征,灰色模型能够有效捕捉这些规律。通过构建GM(1,1)模型(即最简单的灰色模型),可以对电力负荷时间序列进行非线性拟合,从而获得未来负荷的预测值。 本项目代码实现主要包括以下环节:数据预处理(清洗与整理原始负荷数据)、建立灰色模型(生成一次累加序列并构造微分方程)、求解模型参数(采用最小二乘法或差分方程解法)、执行预测过程、进行模型检验(通过残差分析、自相关函数与偏自相关函数等统计方法评估模型适应性),以及结果可视化(展示原始数据与预测结果的对比图)。 尽管灰色模型具有简单易用的优点,但在数据波动较大或趋势复杂时可能表现不足。为提升预测精度,可考虑结合其他预测方法(如ARIMA、神经网络等)进行集成学习,或通过改进灰色模型(如引入多变量灰色模型、二次累加序列等)以增强其复杂性与适应性。 在实际应用中,电力公司定期开展负荷预测,以制定发电计划、调度策略及应急措施。本项目提供的代码与模型可作为学习与实践的模板,协助研究人员或工程师快速掌握电力负荷预测的基本方法,从而为电力系统的高效运行提供支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值